如何在Nim中对序列进行排序?

时间:2017-03-01 11:11:18

标签: sorting list-comprehension nim

我有一个由列表推导生成的序列如下:

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获得数组?

1 个答案:

答案 0 :(得分:8)

sort适用于序列(openArray是一个接受arrayseq s的通用参数类型,但它希望比较过程作为第二个参数

您可以从系统模块提供默认cmp:

sort(a_bigram_list, system.cmp)