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)