有没有办法在Scala中解析函数的输入参数(akin to Clojure)?
所以,而不是
scala> def f(p: (Int, Int)) = p._1
f: (p: (Int, Int))Int
我想要这个(它不起作用):
scala> def f((p1, p2): (Int, Int)) = p1
答案 0 :(得分:17)
我想在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 }
答案 1 :(得分:0)
def f(p: ((Int, Int), (Int, Int))) = p._1 > f: (p: ((Int, Int), (Int, Int)))(Int, Int)
f((1,2), (3,4)) > res1: (Int, Int) = (1,2)