nim语言教程(三)

本文是Nim语言教程的第三部分,主要介绍如何处理模块中相同函数的冲突,通过重命名模块避免split函数冲突。此外,讲解了重载的概念,以及在Nim中如何使用迭代器和对象,包括定义对象、空对象声明和初始化。

在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)#键值顺序不重要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值