nim 3. 各种集合
其实我挺想先去学习一下nim的模块系统,毕竟我决定暂时放弃学习golang,就是因为感觉他的模块和包方面的设计,不像c#+nuget的组合那么舒服。
但是这里还是先学习一下集合吧,感觉这方面nim很有现代感。
常用的集合
1)定长数组
定义Arrays数组的时候, 如果知道初始值,可以直接初始化。 如果不知道初始值,需要指定长度和类型。
var
b = [5, 7, 9] #有初始值
d: array[7, string] #无初始值
c = [] # error
定长数组的长度和类型都是定义的时候就要明确的。
2)变长数组
1 var
2 e1: seq[int] = @[] #无初始值,需要指定类型
3 f = @["abc", "def"] #有初始值,可以自动推断类型 , 用 @ 符合,和定长数组区分。
这个有点像c#的List, 支持泛型的, 可以调用泛型方法初始化变长数组
var e = newSeq[int]()
看看增删元素的代码:
1 var list = @[1,2]
2 list.add(3)
3 list.del(1)
4 echo list
这段代码输出:
可以看到,del方法是按照下标删除元素。
切片
看代码
var list = @[1,2,3,4]
echo "切片:", list[1..2]
输出:
, 看来输出的还是变长数组。 再测试一下
var list = @[1,2,3,4]
var list2 = list[1..2]
list2.add(5)
echo "切片2: ", list2
输出:

感觉写起来和python没差别,却拥有了c的执行效率, 这应该就是nim的魅力所在吧。
感觉这篇有点长了, 元组就不多说了,感觉和c#的元组类型没啥差别。 【end】
nim 3. 各种集合的更多相关文章
- 浅谈公平组合游戏IGC
浅谈公平组合游戏IGC IGC简介 一个游戏满足以下条件时被叫做IGC游戏 (前面三个字是自己YY的,不必在意) 竞争性:两名玩家交替行动. 公平性:游戏进程的任意时刻,可以执行的操作和操作者本人无关 ...
- AcWing 893. 集合-Nim游戏
//只能拿某些特定个数的石子 #include <cstring> #include <iostream> #include <algorithm> #includ ...
- Nim游戏
目前有3堆石子,每堆石子个数也是任意的,双方轮流从中取出石子,规则如下:1)每一步应取走至少一枚石子:每一步只能从某一堆中取走部分或全部石子:2)如果谁不能取谁就失败. Bouton定理: 必败状态当 ...
- Nim教程【十】
openarray类型 注意:openarray类型只能用于参数 固定大小的数组虽然性能不错,但过于呆板,使用取来不是很方便 对于一个方法来说,传入参数如果是一个数组,最好是不要限制数组的长度 也就是 ...
- Nim教程【九】
向关注这个系列的朋友们,道一声:久违了! 它并没有被我阉掉,他一定会得善终的,请各位不要灰心 Set集合类型 为了在特殊场景下提高程序的性能设置了Set类型,同时也是为了保证性能,所以Set只能容纳有 ...
- 编程之美----NIM游戏
: 博弈游戏·Nim游戏 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 今天我们要认识一对新朋友,Alice与Bob.Alice与Bob总是在进行各种各样的比试,今天他 ...
- [ACM_数学] Fibonacci Nim(另类取石子,2-4组合游戏)
游戏规则: 有一堆个数为n的石子,游戏双方轮流取石子,满足: 1)先手不能在第一次把所有的石子取完: 2)之后每次可以取的石子数介于1到对手刚取的石子数的2倍之间(包含1和对手刚取的石子数的2倍). ...
- [hihoCoder] 博弈游戏·Nim游戏
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 今天我们要认识一对新朋友,Alice与Bob.Alice与Bob总是在进行各种各样的比试,今天他们在玩一个取石子的游戏.在 ...
- (转载)Nim游戏博弈(收集完全版)
Nim游戏的概述: 还记得这个游戏吗?给出n列珍珠,两人轮流取珍珠,每次在某一列中取至少1颗珍珠,但不能在两列中取.最后拿光珍珠的人输.后来,在一份资料上看到,这种游戏称为“拈(Nim)”.据说,它源 ...
- Nim游戏(组合游戏Combinatorial Games)
http://baike.baidu.com/view/1101962.htm?fr=aladdin Nim游戏是博弈论中最经典的模型(之一),它又有着十分简单的规则和无比优美的结论 Nim游戏是组合 ...
随机推荐
- C++ future
promise 空模板 非 void 特化,用于在线程间交流对象 void 特化,用于交流无状态事件 类模板 std::promise 提供存储值或异常的设施,之后通过 std::promise 对象 ...
- 10 CSS边框属性
10 CSS边框属性 border-style(边框风格) 定义边框的风格,值可以有: /* none:没有边框,当border的值为none的时候,系统将会忽略[border-color] hidd ...
- docker运行javaWeb服务,操作文件异常
一.问题由来 部署一个测试服务在自己的服务器上面,然后运行其中的一个功能.然后报错,报错信息如下 二.问题分析 自己一开始也很疑惑,怎么会出现这个问题呢,自己明明把对应的文件放在对应的目录下面,并且已 ...
- LiteOS-A内核中的procfs文件系统分析
一. procfs介绍 procfs是类UNIX操作系统中进程文件系统(process file system)的缩写,主要用于通过内核访问进程信息和系统信息,以及可以修改内核参数改变系统行为.需要注 ...
- Push failed idea将项目发布到gitHub失败
此时需要点击VCS --> inport into version..-->create git ...重新生成仓库
- HarmonyOS跨进程通信—IPC与RPC通信开发指导
一.IPC与RPC通信概述 基本概念 IPC(Inter-Process Communication)与RPC(Remote Procedure Call)用于实现跨进程通信,不同的是前者使用Bi ...
- HarmonyOS 3百机升级计划,来了!
HarmonyOS 3规模升级来了! 为大家奉上百余款机型升级计划! 你的手机什么时候可以升级? 赶快下滑查看!
- 基于 Scriptable 从零开始美化iOS桌面(集合篇)
Scriptable 脚本合集 iOS桌面组件神器(Scriptable)原创脚本,精美作品收集.分享! 如果喜欢,欢迎点个 ️ Star ️ 给予小支持,感谢您的使用!喜欢这个项目?有好的脚本?请考 ...
- css 去除浮动布局
前言 在清楚浮动的时候呢,网上有7种,这里只介绍3种,小声哔哔,其他4种都有坑. 正文 第一种: <div class="container"> <div> ...
- CentOS+Django+uWSGI+Celery+Supervisor配置
目录 背景 目录 安装 配置Supervisor 1.生成配置文件 2. 修改配置文件 3. 创建进程文件 创建 uwsgi.conf 进程文件 创建celery进程文件 启动supervisor 启 ...