14

Scala で関数の入力パラメータを分解する方法はありますか ( Clojure に似ています)?

だから、代わりに

scala> def f(p: (Int, Int)) = p._1
f: (p: (Int, Int))Int

これが欲しいです(動作しません):

scala> def f((p1, p2): (Int, Int)) = p1
4

2 に答える 2

18

Scalaでは、パターンマッチングを使用して同じことを達成すると思います。たとえば、次のようになります。

val f: (Int, Int) => Int = { case (p1, p2) => p1 }

または、同等に:

def f(p: (Int, Int)) = p match { case(p1, p2) => p1 }

型を推測できる場合は、(Int, Int) => Intを削除できます。

List((1, 2), (3, 4)) map { case (p1, p2) => p1 }
于 2013-05-01T21:05:41.983 に答える