scalaプログラミング第17章学習ノート(4)——メタグループ

1961 ワード

メタグループは、固定数のエントリを組み合わせて、全体として転送することができる.配列やリストとは異なり、メタグループは異なるタイプのオブジェクトを保存できます.
メタグループは、メソッドの複数の値を返すためによく使用されます.たとえば、次の方法では、コレクション内の最も長い単語を見つけてインデックスを返します.
scala> def longestWord(words: Array[String]) = {

     | var word = words(0)

     | var idx = 0

     | for (i <- 1 until words.length)

     | if (words(i).length > word.length) {

     | word = words(i)

     | idx = i

     | }

     | (word, idx)

     | }

longestWord: (words: Array[String])(String, Int)

次に、メソッドの例を示します.
scala> val longest = longestWord("The quick brown fox".split(" "))

longest: (String, Int) = (quick,1)

メタグループの要素にアクセスするには、メソッドを使用します.1最初の要素にアクセス、2.2番目にアクセスします.
scala> longest._1

res3: String = quick



scala> longest._2

res4: Int = 1

また、メタグループの各要素を独自の変数に割り当てることもできます.次のようにします.
scala> val (word, idx) = longest

word: String = quick

idx: Int = 1



scala> word

res5: String = quick

また、カッコを外すと、次のような結果が得られます.
scala> val word, idx = longest

word: (String, Int) = (quick,1)

idx: (String, Int) = (quick,1)