我有一个由列表推导生成的序列如下:
var a_bigram_list = lc[a[i..i+2] | (i <- 0..<len(a)), string]
现在,我想对它进行排序,但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)
有没有办法对序列进行排序?或者我需要将其转换为数组?如果是这样,有没有办法从lc获得数组?
答案 0 :(得分:8)
sort
适用于序列(openArray
是一个接受array
和seq
s的通用参数类型,但它希望比较过程作为第二个参数
您可以从系统模块提供默认cmp:
sort(a_bigram_list, system.cmp)