是否有可能破坏 Nim 中的序列?

Ale*_*hin 2 nim-lang

Nim 是否可以获取前 N 个元素?就像是:

let [a, b, ...rest] = "a/b/c".split("/")
Run Code Online (Sandbox Code Playgroud)

聚苯乙烯

我正在尝试解析“NYSE:MSFT”字符串的用例

proc parse_esymbol*(esymbol: string): tuple[string, string] =
  let parts = esymbol.split(":")
  assert parts.len == 2, fmt"invalid esymbol '{esymbol}'"
  (parts[0], parts[1])

echo parse_esymbol("NYSE:MSFT")
Run Code Online (Sandbox Code Playgroud)

小智 6

您可以从元组中分配变量,如下所示:

let (a,b) = ("a","b")
Run Code Online (Sandbox Code Playgroud)

没有内置的 seq 到元组转换,但您可以使用如下的小宏来完成:

macro first[T](s:openArray[T],l:static[int]):untyped =       
  result = newNimNode(nnkPar)
  for i in 0..<l:            
    result.add nnkBracketExpr.newTree(s,newLit(i))   


let (a,b) = "a/b/c".split('/').first(2)
Run Code Online (Sandbox Code Playgroud)