nim语言教程(一)

这篇教程主要介绍了nim语言的基础知识,包括字符串输入输出、变量(可变与不可变)、数据类型、parse转换、流程控制、case与区间、数组操作以及序列和while循环。适合有一定编程基础的学习者参考。

因为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"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值