この場合、を使用list.map(_.id)
するのが最善の解決策です。明らかに、それを行うには他にも多くの方法があります。大局的に見ると、以下に 2 つの例を示します。
配列への注入
選択した要素を配列に追加します。例:
> list = [1,2,3]
=> [1,2,3]
> list.inject([]) { |list,el| list << "Element #{el}" if (el % 2 == 0); list }
=> ["Element 2"]
Scala では次のように実装できます。
> val list = List(1,2,3)
list: List[Int] = List(1, 2, 3)
> val map = list.map(x => if (x % 2 == 0) Some(s"Element $x") else None).flatten
map: List[String] = List(Element 2)
ハッシュへの注入
ハッシュに注入するRubyコードに続いて:
> list = [1,2,3]
=> [1,2,3]
> list.inject({}) { |memo,x| memo[x] = "Element #{x}"; memo }
=> {1=>"Element 1", 2=>"Element 2", 3=>"Element 3"}
次のように Scala で実行できます。
> val list = List(1,2,3)
list: List[Int] = List(1, 2, 3)
> val map = list.map(x => (x -> s"Element $x")).toMap
map: scala.collection.immutable.Map[Int,String] = Map(1 -> Element 1, 2 -> Element 2, 3 -> Element 3)