因为nim语言网上的相关文章不是特别多,所以做个学习教程笔记,本教程不是特别详细,需要有一定编程语言功底的人来看,更多详细语法可以看nim语言的官方文档
0x00 字符串输入与输出
字符串输入,let定义不可变变量

字符串输出,可通过逗号分隔输出,echo后自带一个换行

echo "Hello"
echo ""#就会单独空一行
echo ""
echo "World"," 10 "," string 2"
echo 10/2#按浮点型计算
echo "strings ",10,5+5,5*2

多行输出
var a = """First line
Second line
Third line"""
echo a
0x01 变量,注释
可变变量用var
var variableName = "Value"#变量初始化
echo variableName, "", vareableName
variableName = "Some other STRING value"#重新对变量名赋值时不需要再加上var
echo variableName

不可变变量用let
用let定义的变量不可以再重新修改,不然会报错
let immutableVariable = "Unchangeable Value"#变量初始化
echo immutableVariable
immutableVariable = "THIS wILL BE AN ERROR"

单行注释直接使用#即可
多行注释使用#[]#

0x02 数据类型
定义一个没有数据类型的变量
var a = nil #nil=NORTHING = NO TYPE
变量声明
var a: string
echo a #空字符串将什么都不输出
var b: int
echo b #整形为空即为0,将输出0

多个变量声明或赋值的方法
使用一个var,增强阅读性
var
d = 10
e = 5
w: int
q: float
注:虽然nim语法与python很相似,但是nim不可以使用TAB进行缩进,需要使用空格进行缩进
声明数据类型的同时赋值
var someVariable: string = "some String"
let i: float = 23.55
查看当前变量的数据类型
echo someVariable.type

0x03 parse转换
首先需要导入模块strutils
import strutils
echo "First number:"
let number1 = sdtin.readLine
let parsedNumber1 = number1.parseInt
echo "Seond number:"
let number2 = stdin.readLine.parseInt
let sum = parsedNumber + number2
echo sum

import strutils
var stringInteger = "100"
var stringFloat = "0.25"
var parsedInteger: int
var parsedFloat:float
parsedInteger = stringInteger.parseInt
parsedFloat = stringFloat.parseFloat
echo parsedInteger, " , ",parsedInteger.type
echo parsedFloat," , ",parsedFloat.type
echo parsedInteger.toFloat + parsedFloat

0x04 流程控制
if 10>5:
echo "10 is larger than 5"
if "Hello" == "Hello":
echo "Hello is equal to Hello"
if 5<50:
echo "5<50"
else:
echo "Else"
if 1!=2:
echo "1 not equal 2"
elif 1!=3:
echo "1 not equal 3"
else:
echo "final statement"
0x05 case与区间
var a=0
case a:
of 0:
echo "a is 0"
of 1:
echo "a is 1"
of 2:
echo "a is 2"
else:
echo "a's value is not withing bounds"
echo "Enter your name:"
let input = stdin.readLine
case input:
of "Adam":
echo "Your name is Adam"
of "Eve":
echo "Your name is Eve"
else:
echo "Your name does not match any from the list"
import strutils
echo "Enter your name:"
let input = stdin.readLine.parseInt
case input:
of 0 .. 10: #0-10
echo "Number is between 0 and 10"
of 11 .. 100:
echo "Number is between 11 and 100"
else:
echo "Number is not within range"
0x06 数组,for
数组基本规则
var
#arrayName:array[arraySize, arrayType] = [arrayValues]
a: array[3, int] = [1, 2, 5]
# You can ommit the "array" keyword and only use [], and let the compiler infer data types
b = [1, 7, 50]
#Size of an array must be known at compile-time
#c = [] # error
# Array declaration with no values
d: array[7, string]
echo a
echo b
echo d
stdout.write a[0] #调用数组中的第一个元素
数组的赋值与修改
var array1 = [1, 5, 20]
array1[0] = 100 #重新赋值
echo array1 # 100 5 20
for循环
var
#arrayName:array[arraySize, arrayType] = [arrayValues]
a: array[3, int] = [1, 2, 5]
#[
for loopVariable in iterable:
loop code
]#
#For every element in array "a"
for i in a:
stdout.write i

#第二种for循环
使用范围运算符 ..
for i in a.low .. a.high:
stdout.write a[i]
0x07 序列、while
# Type section of "var" for quicker assignement
var
#Declaration and Initalization
arrayA: array[3, int] = [1, 2, 5]
seqA: seq[int] = @[1, 2, 5] #序列用@标识使用 no size required
# Initialization
arrayB = [1, 7, 50] #Array
seqB = @[1, 7, 50] #Sequence
arrayC = [] #Error arrays require size at compile time ,and type
SeqC = @[] #Error ambigious value, compiler cannot infer it's data type
#Declaration
arrayD: array[7, string] # Array
seqD: seq[string] # Sequence
echo seqA
echo seqB
echo seqD
for e in seqA:
stdout.write e
echo ""
for e in seqB:
stdout.write e
echo ""
for e in seqD:
stdout.write e
echo ""
#输出结果
@[1, 2, 5]
@[1, 7, 50]
@[]
125
1750
序列增加、删除元素,查看序列长度
seqA: seq[int] = @[1, 2, 5]
seqA.add 1000 #序列增加元素,在末尾增加
for e in seqA:
stdout.write e
echo ""
#输出1251000
seqA.del 3 #删除第三号元素:1000
for e in seqA:
stdout.write e
echo ""
#输出125
echo seqA.len #输出序列长度
#3
while循环
var i = 0
while i < 10:
stdout.write "A"
inc i #这就相当于i += 1
第二种while写法
while true:
stdout.write "A"
这篇教程主要介绍了nim语言的基础知识,包括字符串输入输出、变量(可变与不可变)、数据类型、parse转换、流程控制、case与区间、数组操作以及序列和while循环。适合有一定编程基础的学习者参考。

1534

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



