2016-04-04 21 views
3

におけるタプルのリストをループ?は私が</p> <pre><code>List[(String, Object)] </code></pre> <p>どのように私はこのリストをループ<code>for</code>を使用することができ、以下のようなサンプル<code>List</code>を持ってScalaの

私は

for(str <- strlist) 

のようなが、上記の2Dリストのために何かをしたいです。 strのプレースホルダは何ですか?

+1

することはでき '用(STR <と'一覧[(文字列、オブジェクト)] 'の文字列をループ - リスト.map(_._ 1)) 'または' for((str、_)< - list) 'となります。 –

+0

"2d"リストではありません。 1次元のリストで、各要素はペアです。では、ループスルーとはどういう意味ですか?順番に各ペアを取得するか、それとも別のものを取得しますか? –

答えて

1

ループを使用してコレクションを繰り返し処理するのではなく、map、filter、foldまたはforeach(必要に応じて)を使用することをお勧めします。

編集1: 例えば あなたは、いくつかのブール条件

val newList=oldList.filter(tuple=>someCondition(tuple)) 

または単にに応じてフィルタ処理したい場合は、各要素

val newList=oldList.map(tuple=>foo(tuple)) 
val tupleStrings=tupleList.map(tuple=>tuple._1) //in your situation 

にいくつかのFUNC fooの(タプル)を適用する場合あなたのリストを印刷したい場合

oldList.foreach(tuple=>println(tuple)) //assuming tuple is printable 

y OUは、ここにある

for ((s,o) <- list) yield f(s,o) 
+0

素晴らしい提案ですが、例を残して投票権を得ることができました。 –

+1

ほんの少しの例が追加されました – xrs

+0

マップは私が探していたものでした。 –

1

あなたはちょうどあなたがこのようなタプルのリストの上にマッピングすることができ、文字列を取得したい場合:

// Just some example object 
case class MyObj(i: Int = 0) 

// Create a list of tuples like you have 
val tuples = Seq(("a", new MyObj), ("b", new MyObj), ("c", new MyObj)) 

// Get the strings from the tuples 
val strings = tuples.map(_._1) 

// Output: Seq[String] = List(a, b, c) 

注:タプルメンバーは は1からインデックス付けされた、アンダースコア記法を(使用してアクセスされ、 0以外)

1

forと同様の機能を見つけることができます:予想されるタイプが必要です1つの引数をとる関数は2タプルを受け入れます。 コードをコピーし{ case (id, name) => ... }

簡単、無名関数をパターンマッチングを考えてみましょう:

val fruits: List[(Int, String)] = List((1, "apple"), (2, "orange")) 

fruits.foreach { 
    case (id, name) => { 
    println(s"$id is $name") 
    } 
} 
0

scala> val fruits: List[(Int, String)] = List((1, "apple"), (2, "orange")) 
fruits: List[(Int, String)] = List((1,apple), (2,orange)) 

scala> 

scala> fruits.foreach { 
    | case (id, name) => { 
    |  println(s"$id is $name") 
    | } 
    | } 

1 is apple 
2 is orange 

注意を例とあなたはタプルの要素を抽出することができ、ここで
https://twitter.github.io/scala_school/collections.html