これは次のフォローアップです:文字列のセットのセットを Scala のデカルト積に拡張する
アイデアはあなたが取りたいということです:
val sets = Set(Set("a","b","c"), Set("1","2"), Set("S","T"))
そして戻ってきます:
Set("a&1&S", "a&1&T", "a&2&S", ..., "c&2&T")
一般的な解決策は次のとおりです。
def combine[A](f:(A, A) => A)(xs:Iterable[Iterable[A]]) =
xs.reduceLeft { (x, y) => x.view.flatMap {a => y.map(f(a, _)) } }
次のように使用されます。
val expanded = combine{(x:String, y:String) => x + "&" + y}(sets).toSet
Set[Set[A]]
理論的には、 type の入力を取得して a を取得する方法があるはずSet[B]
です。つまり、要素を結合しながら型を変換するということです。
使用例は、(上記のように) 文字列のセットを取り込み、それらの連結の長さを出力することです。のf
関数は、combine
次のような形式になります。
(a:Int, b:String) => a + b.length
私は実装を思いつくことができませんでした。誰か答えがありますか?