ale*_*inn 5 sorting list-comprehension nim-lang
我有一个由列表推导生成的序列如下:
var a_bigram_list = lc[a[i..i+2] | (i <- 0..<len(a)), string]
Run Code Online (Sandbox Code Playgroud)
现在,我想对它进行排序,但sort(a_bigram_list)会导致以下编译错误
Error: type mismatch: got (seq[string])
but expected one of:
proc sort[A, B](t: OrderedTableRef[A, B]; cmp: proc (x, y: (A, B)): int)
proc sort[A, B](t: var OrderedTable[A, B]; cmp: proc (x, y: (A, B)): int)
proc sort[A](t: CountTableRef[A])
proc sort[A](t: var CountTable[A])
proc sort[T](a: var openArray[T]; cmp: proc (x, y: T): int; order = SortOrder.Ascending)
Run Code Online (Sandbox Code Playgroud)
有什么方法可以对序列进行排序吗?或者我需要将其转换为数组?如果是这样,有没有办法从lc获取数组?
sort使用序列(openArray是一个接受arrays和seqs 的通用参数类型),但它期望比较proc作为第二个参数.
您可以从系统模块提供默认cmp:
sort(a_bigram_list, system.cmp)
Run Code Online (Sandbox Code Playgroud)