在nim中如果导入两个模块,这两个模块内存在相同的函数,那么nim编译器将无法识别调用的是哪个模块下的该函数,所以用到except将其中一个模块的函数去掉
如:
import strutils
import unicode except split
split函数分割
import strutils
echo "Hello World!".split()
#输出@["Hello","World"] 返回的是一个序列,这与python中的split类似
0x01 自定义模块
#1 - Making a module
#2 - Exporting procedures
#3 - Custom naming imported modules
#*号必须加,不然当我们调用导出时无法成功
proc simple*() =
echo "Hello World "
#自定义变量
var testvariable* = 10
#自定义数组
type
customArray* = array[4, int]
模块重命名

0x02 重载
#nim的重载就是重新在下面再写一遍proc过程函数
proc sum(x, y: string): string =
result = x & y
#重载
proc sum(x,y: string,c: int): string =
result = x & y & $c
echo sum("Hello ","World!")
echo sum("Hello ","World!",123)

0x03 迭代器
for e in 1 .. 10:
echo e
#countup相当于python中的range
for e in countup(1, 10):
echo e
#反转输出
for e in countdown(10, 1):
echo e
迭代器输出
iterator cUp(x,y: int): int =
var a = x
while a <= y:
yield a
inc a
for i in cUp(0, 5):
echo i
数组输出
for i in [2,5,7]:
echo i
for i in items([2,5,7]):
echo i
for x, y in [ [1,3,5], [2,4,6] ]:
echo x
echo y
0x04 对象
定义对象
type
someObject = object
name: string
age: int
空对象声明
var oDeclaration: someObject
echo oDeclaration
#输出(name: "",age: 0)
初始化空对象
var oInitialization: someObject = someObject()
初始化赋值
var anObject = someObject(name: "John",age: 21)#键值顺序不重要
本文是Nim语言教程的第三部分,主要介绍如何处理模块中相同函数的冲突,通过重命名模块避免split函数冲突。此外,讲解了重载的概念,以及在Nim中如何使用迭代器和对象,包括定义对象、空对象声明和初始化。
6659

被折叠的 条评论
为什么被折叠?



