私は、2つの配列を地図関数に圧縮した結果を渡す簡潔な方法を見つけようとしています。入力変数の両方を宣言する必要はなく、ラムダで太い矢印を使用する必要もありません。Scalaのタプルとしてラムダをマップする入力を渡す
これは可能ではないかもしれませんが、私は諦める前に尋ねると思いました。
最初の例は、両方の配列を要素ごとに追加した結果を出力する作業コードです。 zipのラムダは、xとyを宣言してから使用する必要があります。
2番目の例は、変換関数に圧縮された入力をより使いやすくするために、「_」などを使用して何をしたいのかを示す非コンパイルコードです。
例1
object Example extends App {
val numbers1: Array[Int] = Array(1,2,3,4,5)
val numbers2: Array[Int] = Array(9,8,7,6,5)
val result = (numbers1, numbers2).zipped.map((x,y) => sum(x,y))
result.foreach(println(_))
def sum(x: Int, y: Int): Int = {
x+y
}
}
変換関数は、「和」のような短い名前を持ち、入力配列がプリミティブであるが、そのラッパー・オブジェクトの配列を渡すときに物事がより詳細得るとき、これは問題あり変換が引数として必要とするいくつかのメンバ変数を含みます。
このような構文の砂糖はありますか?
例2
object Example extends App {
val numbers1: Array[Int] = Array(1,2,3,4,5)
val numbers2: Array[Int] = Array(9,8,7,6,5)
val result = (numbers1, numbers2).zipped.map(sum(_))
result.foreach(println(_))
def sum(inputTuple: (Int, Int)): Int = {
val x = inputTuple._1
val y = inputTuple._2
x + y
}
}
よりI詳細このより私はコードのにおいに自分自身を書いているように私は、感じてそう言うと、私は別の問題を解決するために行くだろうしてください答えのthatsので、もし方向。
あなたは[矢印型クラス](http://eed3si9n.com/learning-scalaz/Arrow.html) –