国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[原創][連載]nim與python的異同3

GraphQuery / 1866人閱讀

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

變量(常量)綁定

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

nim

var
可變變量前綴.
var a = re”^s*(d{4}-d{2}-d{2})s{1,2}(.+)$” # 將變量a與文字列綁定
其后a的內容可變
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”

常用數據結構

python

list:可變長度數組.類似java的ArrayList.

tuple:不可變數組.

dictionary:類似java的HashMap.key-value數據結構

nim

seq:類似python list.長度可變,元素可刪除增加變更.
使用方法:
var e = newSeq[int]() #一個空序列(列表)
let values = @[1,3,5,7] #快捷定義一個有4個整數元素的列表并初始化.完全定義:let values: seq[int] = @[1,3,5,7]

tuple

與python tuple相同

proc test():tuple[name:string, age:int8] =
    (“bill”,67)
let (fname, fage) = test() # 此時,函數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)# 可讀性略差,但結果一樣的寫法:
echo person.name # "Peter"
echo person.age  # 30

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

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

片斷

python
-起始

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

-反向標記片斷

b = "Slices are useful."
print(b[11:-1]) # → "useful" . 11:從開始處第11個下標;-1:從結尾處向前減少下標(反向的意思),也就是[倒數1的下標]
b[11:-2] = "useful" # 出錯, python不支持這樣賦值

nim
-起始

var
  a = "Nim is a progamming language"

echo a[7..12] # --> "a prog"

-反向標記片斷

var
  b = "Slices are useless."

b[11..^2] = "useful" #nim用^表示反向下標位置.^2表示倒數第二個下標
echo b # --> "Slices are useful." # 改變變量b的內容

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/44804.html

相關文章

  • [原創][連載]nimpython異同1

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

    wuaiqiu 評論0 收藏0
  • [原創][連載]nimpython異同2

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

    yibinnn 評論0 收藏0
  • [原創]nimrust特點比較

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

    DevTalking 評論0 收藏0

發表評論

0條評論

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