我試圖找到一個簡潔的方式來傳遞壓縮兩個數組到地圖函數,即結果。一個不需要聲明輸入變量並在lambda中使用胖箭頭。傳遞輸入映射lambda作爲元組在斯卡拉
這可能不可能,但我想我會問,之前放棄。
第一個示例是工作代碼,它打印以元素方式添加兩個數組的結果。拉鍊的lambda必須先聲明x和y,然後才能使用。
第二個示例是非編譯代碼,它說明了我希望使用「_」或類似方法來爲變換函數提供更好的壓縮輸入可用性。
實施例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
}
}
我越詳細介紹這個我越覺得像我自己寫進碼味,所以如果那答案請說出來,我會去解決從另一個問題方向。
你可能會尋找[箭類型類](http://eed3si9n.com/learning-scalaz/Arrow.html) –