在Scala中如何使用二元组给一个普通的两个参数的函数赋值调用?

如我有一个这样的函数

val foo = (name: String, age: Int) => name + age

//现在我有一个tuple 

val p = ("tom",22)

//我想把这个p直接传给 foo 而不是 foo(p._1,p._2)
//有什么办法么?

谢谢

阅读 4.1k
1 个回答

不修改foo的定义的话应该没有办法,元祖的特点就是每个元素的类型可能不同。
对于数组之类的集合是可以使用 :_* 将参数序列化传给有不定长的参数列表的函数。

修改foo的方法如下:

 val foo = (person:Tuple2[String,Int]) => person._1 + person._2

或者

 val foo = (person:(String,Int)) => person._1 + person._2
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进