亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

[原創(chuàng)][連載]nim與python的異同3

GraphQuery / 1922人閱讀

摘要:變量常量綁定無特定關(guān)鍵字直接設(shè)值將一個文字列放到名為的變量里的類型由文字列上面定義的正則表達式變成了整數(shù)這里就帶來一個在大工程里很容易帶來困擾的問題理解代碼不得不受制于類型極易變的變量要理解代碼所必需的工作量極大可變變量前綴將變量與

變量(常量)綁定

python
無特定關(guān)鍵字,直接設(shè)值
a = r”^s*(d{4}-d{2}-d{2})s{1,2}(.+)$” # 將一個文字列放到名為a的變量里
a = 8086 # OK,a的類型由文字列(上面定義的正則表達式)變成了整數(shù)(8086)
這里就帶來一個在大工程里很容易帶來困擾的問題,理解代碼不得不受制于類型極易變的變量,要理解代碼所必需的工作量極大.

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” #這里出錯

const
常量前綴.

const
  HTTP_METHOD = r”HEAD”

常用數(shù)據(jù)結(jié)構(gòu)

python

list:可變長度數(shù)組.類似java的ArrayList.

tuple:不可變數(shù)組.

dictionary:類似java的HashMap.key-value數(shù)據(jù)結(jié)構(gòu)

nim

seq:類似python list.長度可變,元素可刪除增加變更.
使用方法:
var e = newSeq[int]() #一個空序列(列表)
let values = @[1,3,5,7] #快捷定義一個有4個整數(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ù)test返回的名稱與年齡分別賦給了fname, fage.fname類型推斷為string, fage類型推斷為int8.

與python dictionary相同用法. 用key-value進行訪問
示例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é)果一樣的寫法:
echo person.name # "Peter"
echo person.age  # 30

array
雖然完全不同,但用法卻與python的tuple有些異曲同工.在需要不可變數(shù)組(既不需要增刪改元素)的地方,極其方便地臨時存一些值.

var 
  values = [“abc”,”def”,”ghijk”] #自動推斷類型為array[3,string]
  values2: array[4,int] = [1,2,3,5] #4個下標(biāo)的不可變數(shù)組,初始化時賦了4個值.
  values:array[0..5, int] = [2,3,5,8] #最長5個下標(biāo)的不可變數(shù)組,初始化時賦了4個值.

片斷

python
-起始

a = "python is a progamming language"
b = "Slices are useless."
print(a[12:18]) # --> "progam" #12:從開始處第12個下標(biāo);18:從開始處的下標(biāo)

-反向標(biāo)記片斷

b = "Slices are useful."
print(b[11:-1]) # → "useful" . 11:從開始處第11個下標(biāo);-1:從結(jié)尾處向前減少下標(biāo)(反向的意思),也就是[倒數(shù)1的下標(biāo)]
b[11:-2] = "useful" # 出錯, 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ù)第二個下標(biāo)
echo b # --> "Slices are useful." # 改變變量b的內(nèi)容

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/44804.html

相關(guān)文章

  • [原創(chuàng)][連載]nimpython異同1

    摘要:與的異同名詞方法與函數(shù)同義僅僅是語言規(guī)定差異在本文中不做區(qū)別都是指定義的處理過程的有返回值沒有返回值版之后出現(xiàn)的方法專指類中的函數(shù)的方法指無返回值的處理函數(shù)指有返回值的處理中的方法指無返回值的處理函數(shù)指有返回值的處理主模塊的判斷空代碼為保 nim與python的異同 名詞:方法與函數(shù)同義.僅僅是語言規(guī)定差異.在本文中不做區(qū)別. 1. python都是指def定義的處理過程 2. nim...

    wuaiqiu 評論0 收藏0
  • [原創(chuàng)][連載]nimpython異同2

    摘要:方法重載不支持支持和類似基本類型轉(zhuǎn)換整數(shù)文字列使用整數(shù)內(nèi)置方法由引入使用進行格式化由引入操作符可選格式文字列沒有格式文字列共位小數(shù)位位右對齊進行格式化 overload(方法重載) python 不支持 nim 支持.和c++類似 基本類型轉(zhuǎn)換 整數(shù) → 文字列 使用整數(shù)(int/int8/int16/int32/64/uint/uint8/uint16/uint32/...

    yibinnn 評論0 收藏0
  • [原創(chuàng)]nimrust特點比較

    摘要:與的特點比較這兩個目前都是小眾語言做了些時間的研究寫了點東西有了點心得相似點有衛(wèi)生宏區(qū)別與的不衛(wèi)生宏在類或定義體之外定義函數(shù)代碼沒有分成頭與實現(xiàn)體例如的頭與實現(xiàn)的與定義的接口定義與實現(xiàn)定義是分開的而與是不分開的運用函數(shù)式編程高階函數(shù)目前是新 nim與rust的特點比較 這兩個目前都是小眾語言,做了些時間的研究,寫了點東西有了點心得 相似點: 有衛(wèi)生宏.區(qū)別與C++的(不衛(wèi)生)宏 在類...

    DevTalking 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<