私は Scala が初めてで、いくつかの scala 構文を理解しようとしています。
だから私は文字列のリストを持っています。
wordList: List[String] = List("this", "is", "a", "test")
単語ごとの子音と母音の数を含むペアのリストを返す関数があります。
def countFunction(words: List[String]): List[(String, Int)]
たとえば、次のようになります。
countFunction(List("test")) => List(('Consonants', 3), ('Vowels', 1))
ここで、単語のリストを取得し、署名の数でグループ化します。
def mapFunction(words: List[String]): Map[List[(String, Int)], List[String]]
//using wordList from above
mapFunction(wordList) => List(('Consonants', 3), ('Vowels', 1)) -> Seq("this", "test")
List(('Consonants', 1), ('Vowels', 1)) -> Seq("is")
List(('Consonants', 0), ('Vowels', 1)) -> Seq("a")
これを行うには GroupBy を使用する必要があると考えています:
def mapFunction(words: List[String]): Map[List[(String, Int)], List[String]] = {
words.groupBy(F: (A) => K)
}
Map.GroupBy の scala api を読んだところ、F は識別子関数を表し、K は返されるキーのタイプであることがわかりました。だから私はこれを試しました:
words.groupBy(countFunction => List[(String, Int)]
しかし、scala はこの構文を好みません。groupBy の例をいくつか調べてみましたが、私のユースケースでは何も役に立たないようです。何か案は?