List[Int]
がList[List[Int]]
を返すという関数をScalaで作成したいとします。たとえば、getCombs(List(1,2))
はList(List(1), List(2), List(1,2))
を返します。関数型プログラミングでスカラリストのリストを作成するには
私は機能プログラミングを研究していますので、そのパラダイムを使用して私の仕事を達成したいと思います。
私は次の関数を作成して動作しましたが、機能的なプログラミングスタイルで仕事をするより良い方法が存在すると思います。
def getCombs(coins: List[Int]): List[List[Int]] = {
var l = List(coins)
var i = 0
for (i <- 1 to coins.length - 1) {
var it = coins.combinations(i)
while (it.hasNext) {
val el = it.next
val newL = el :: l
l = newL
}
}
return l
}
これは、List [Iterator [List] [Int]]]を返します。 – marstran
私はマップをflatMapに変更しました。@Dimaの答えに下位の投票を与えるよりもコードを修正する方が良いでしょう。 :-) –
ありがとう、@KeithPinson。いくつかの人々はちょうどそのようにする必要があります:) – Dima