2
我想在Scala中實現平坦化功能。 我完成了這樣的事情:斯卡拉。語言平坦化功能的實現
// implementation
def flatten(xs: List[Any]): List[Any] =
xs match {
case List() => List()
case y::ys => y match {
case k::ks => flatten(List(k)) ::: flatten(ks) ::: flatten(ys)
case _ => y :: flatten(ys)
}
}
// something like tests
def main(args: Array[String]){
val f1 = flatten(List(List(1, 1), 2, List(3, List(5, 8))))
assert(f1 == List(1, 1, 2, 3, 5, 8))
val f2 = flatten(List(List(List(1), List(1)), 2, List(3, List(5, 8))))
assert(f2 == List(1, 1, 2, 3, 5, 8))
}
此實現的工作,但使用的是串聯(它是緩慢的,我認爲)。有人可以提供(或解釋)一個沒有列表連接的解決方案嗎?
我GOOGLE了一點點,但大多數有關內置問題的扁平化
丟掉類型不是慣用;-) –
這是更適合codereview.se – Daenyth
@Daenyth,請描述您的筆記。我有一個原子問題,我正確地用代碼示例來描述和說明。什麼原因將其移動到某個地方? – kharandziuk