摘要:變量常量綁定無(wú)特定關(guān)鍵字直接設(shè)值將一個(gè)文字列放到名為的變量里的類(lèi)型由文字列上面定義的正則表達(dá)式變成了整數(shù)這里就帶來(lái)一個(gè)在大工程里很容易帶來(lái)困擾的問(wèn)題理解代碼不得不受制于類(lèi)型極易變的變量要理解代碼所必需的工作量極大可變變量前綴將變量與
變量(常量)綁定
python
無(wú)特定關(guān)鍵字,直接設(shè)值
a = r”^s*(d{4}-d{2}-d{2})s{1,2}(.+)$” # 將一個(gè)文字列放到名為a的變量里
a = 8086 # OK,a的類(lèi)型由文字列(上面定義的正則表達(dá)式)變成了整數(shù)(8086)
這里就帶來(lái)一個(gè)在大工程里很容易帶來(lái)困擾的問(wèn)題,理解代碼不得不受制于類(lèi)型極易變的變量,要理解代碼所必需的工作量極大.
nim
var
可變變量前綴.
var a = re”^s*(d{4}-d{2}-d{2})s{1,2}(.+)$” # 將變量a與文字列綁定
其后a的內(nèi)容可變
a = “change the value” #這里OK
let
不可變變量前綴.(一旦綁定,不得變更)
let b = re”^s*(d{4}-d{2}-d{2})s{1,2}(.+)$” # 將不可變變量b與文字列綁定
其后改變b
b = “change the value” #這里出錯(cuò)
const
常量前綴.
const HTTP_METHOD = r”HEAD”常用數(shù)據(jù)結(jié)構(gòu)
python
list:可變長(zhǎng)度數(shù)組.類(lèi)似java的ArrayList.
tuple:不可變數(shù)組.
dictionary:類(lèi)似java的HashMap.key-value數(shù)據(jù)結(jié)構(gòu)
nim
seq:類(lèi)似python list.長(zhǎng)度可變,元素可刪除增加變更.
使用方法:
var e = newSeq[int]() #一個(gè)空序列(列表)
let values = @[1,3,5,7] #快捷定義一個(gè)有4個(gè)整數(shù)元素的列表并初始化.完全定義:let values: seq[int] = @[1,3,5,7]
tuple
與python tuple相同
proc test():tuple[name:string, age:int8] = (“bill”,67) let (fname, fage) = test() # 此時(shí),函數(shù)test返回的名稱(chēng)與年齡分別賦給了fname, fage.fname類(lèi)型推斷為string, fage類(lèi)型推斷為int8.
與python dictionary相同用法. 用key-value進(jìn)行訪問(wèn)
示例1:
var o = (name: "Banana", weight: 2, rating: "c") o[1] = 7 # weight:2 → 7 o.name = "Apple" o.rating = ‘g’
示例2:
type Person = tuple[name: string, age: int] var person: Person person = (name: "Peter", age: 30) person = ("Peter", 30)# 可讀性略差,但結(jié)果一樣的寫(xiě)法: echo person.name # "Peter" echo person.age # 30
array
雖然完全不同,但用法卻與python的tuple有些異曲同工.在需要不可變數(shù)組(既不需要增刪改元素)的地方,極其方便地臨時(shí)存一些值.
var values = [“abc”,”def”,”ghijk”] #自動(dòng)推斷類(lèi)型為array[3,string] values2: array[4,int] = [1,2,3,5] #4個(gè)下標(biāo)的不可變數(shù)組,初始化時(shí)賦了4個(gè)值. values:array[0..5, int] = [2,3,5,8] #最長(zhǎng)5個(gè)下標(biāo)的不可變數(shù)組,初始化時(shí)賦了4個(gè)值.片斷
python
-起始
a = "python is a progamming language" b = "Slices are useless." print(a[12:18]) # --> "progam" #12:從開(kāi)始處第12個(gè)下標(biāo);18:從開(kāi)始處的下標(biāo)
-反向標(biāo)記片斷
b = "Slices are useful." print(b[11:-1]) # → "useful" . 11:從開(kāi)始處第11個(gè)下標(biāo);-1:從結(jié)尾處向前減少下標(biāo)(反向的意思),也就是[倒數(shù)1的下標(biāo)] b[11:-2] = "useful" # 出錯(cuò), python不支持這樣賦值
nim
-起始
var a = "Nim is a progamming language" echo a[7..12] # --> "a prog"
-反向標(biāo)記片斷
var b = "Slices are useless." b[11..^2] = "useful" #nim用^表示反向下標(biāo)位置.^2表示倒數(shù)第二個(gè)下標(biāo) echo b # --> "Slices are useful." # 改變變量b的內(nèi)容
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/44804.html
摘要:與的異同名詞方法與函數(shù)同義僅僅是語(yǔ)言規(guī)定差異在本文中不做區(qū)別都是指定義的處理過(guò)程的有返回值沒(méi)有返回值版之后出現(xiàn)的方法專(zhuān)指類(lèi)中的函數(shù)的方法指無(wú)返回值的處理函數(shù)指有返回值的處理中的方法指無(wú)返回值的處理函數(shù)指有返回值的處理主模塊的判斷空代碼為保 nim與python的異同 名詞:方法與函數(shù)同義.僅僅是語(yǔ)言規(guī)定差異.在本文中不做區(qū)別. 1. python都是指def定義的處理過(guò)程 2. nim...
摘要:方法重載不支持支持和類(lèi)似基本類(lèi)型轉(zhuǎn)換整數(shù)文字列使用整數(shù)內(nèi)置方法由引入使用進(jìn)行格式化由引入操作符可選格式文字列沒(méi)有格式文字列共位小數(shù)位位右對(duì)齊進(jìn)行格式化 overload(方法重載) python 不支持 nim 支持.和c++類(lèi)似 基本類(lèi)型轉(zhuǎn)換 整數(shù) → 文字列 使用整數(shù)(int/int8/int16/int32/64/uint/uint8/uint16/uint32/...
摘要:與的特點(diǎn)比較這兩個(gè)目前都是小眾語(yǔ)言做了些時(shí)間的研究寫(xiě)了點(diǎn)東西有了點(diǎn)心得相似點(diǎn)有衛(wèi)生宏區(qū)別與的不衛(wèi)生宏在類(lèi)或定義體之外定義函數(shù)代碼沒(méi)有分成頭與實(shí)現(xiàn)體例如的頭與實(shí)現(xiàn)的與定義的接口定義與實(shí)現(xiàn)定義是分開(kāi)的而與是不分開(kāi)的運(yùn)用函數(shù)式編程高階函數(shù)目前是新 nim與rust的特點(diǎn)比較 這兩個(gè)目前都是小眾語(yǔ)言,做了些時(shí)間的研究,寫(xiě)了點(diǎn)東西有了點(diǎn)心得 相似點(diǎn): 有衛(wèi)生宏.區(qū)別與C++的(不衛(wèi)生)宏 在類(lèi)...
閱讀 2832·2023-04-25 18:58
閱讀 976·2021-11-25 09:43
閱讀 1210·2021-10-25 09:46
閱讀 3494·2021-09-09 11:40
閱讀 1679·2021-08-05 09:59
閱讀 869·2019-08-29 15:07
閱讀 956·2019-08-29 12:48
閱讀 695·2019-08-29 11:19