toSeq(some_string) 类型不匹配
toSeq(some_string) Type Mismatch
我想将 string
转换为 seq[char]
,这样我就可以在 sequtils 中使用一些过程,但是 toSeq
模板有问题.
例如:
proc someproc(a, b: string): seq[tuple[a, b: char]] =
let
s1 = toSeq(a)
s2 = toSeq(b)
result = zip(s1, s2)
给出编译错误:
lib/pure/collections/sequtils.nim(329, 20) Error: type mismatch: got (seq[string], char)
but expected one of:
system.add(x: var string, y: char)
system.add(x: var string, y: string)
system.add(x: var seq[T], y: T)
system.add(x: var string, y: cstring)
system.add(x: var seq[T], y: openarray[T])
查看该模板:https://github.com/Araq/Nim/blob/master/lib/pure/collections/sequtils.nim#L292
我看到序列的类型由 iter
参数确定,在本例中是 string
而不是 char
。这是模板中的错误,还是我错误地使用了这个模板?
我使用的是相当新的 Nim 10.3 版本
问题是你的表达式本身不是迭代器。我可以通过调用 items
让您的示例工作,即将 string
显式转换为迭代器:
proc someproc(a, b: string): seq[tuple[a, b: char]] =
let
s1 = toSeq(a.items)
s2 = toSeq(b.items)
result = zip(s1, s2)
我不知道这是否属于错误。如果你用任何不允许 for x in <your_expression>
的东西调用 toSeq
,那么你将得到一个有意义的错误。在您的情况下,这确实有效,因为 string
可以 converted 为迭代器。但是 return 类型的类型在上面的行中确定,您将简单地得到 seq[string]
。尽管如此,在 Github.
上提交问题可能不会有什么坏处
我想将 string
转换为 seq[char]
,这样我就可以在 sequtils 中使用一些过程,但是 toSeq
模板有问题.
例如:
proc someproc(a, b: string): seq[tuple[a, b: char]] =
let
s1 = toSeq(a)
s2 = toSeq(b)
result = zip(s1, s2)
给出编译错误:
lib/pure/collections/sequtils.nim(329, 20) Error: type mismatch: got (seq[string], char)
but expected one of:
system.add(x: var string, y: char)
system.add(x: var string, y: string)
system.add(x: var seq[T], y: T)
system.add(x: var string, y: cstring)
system.add(x: var seq[T], y: openarray[T])
查看该模板:https://github.com/Araq/Nim/blob/master/lib/pure/collections/sequtils.nim#L292
我看到序列的类型由 iter
参数确定,在本例中是 string
而不是 char
。这是模板中的错误,还是我错误地使用了这个模板?
我使用的是相当新的 Nim 10.3 版本
问题是你的表达式本身不是迭代器。我可以通过调用 items
让您的示例工作,即将 string
显式转换为迭代器:
proc someproc(a, b: string): seq[tuple[a, b: char]] =
let
s1 = toSeq(a.items)
s2 = toSeq(b.items)
result = zip(s1, s2)
我不知道这是否属于错误。如果你用任何不允许 for x in <your_expression>
的东西调用 toSeq
,那么你将得到一个有意义的错误。在您的情况下,这确实有效,因为 string
可以 converted 为迭代器。但是 return 类型的类型在上面的行中确定,您将简单地得到 seq[string]
。尽管如此,在 Github.