【问题标题】:Some with multiple arguments creates Option of Tuple一些具有多个参数的创建元组选项
【发布时间】:2015-01-03 17:18:47
【问题描述】:
以下代码在 Scala 中如何工作?
scala> Some(2,true,3, false)
res13: Some[(Int, Boolean, Int, Boolean)] = Some((2,true,3,false))
我没有看到为一些可以接受多个参数的应用定义方法。
【问题讨论】:
标签:
scala
scala-collections
scala-option
【解决方案1】:
如果不适合的话,多个参数会被隐式适配成一个元组;任何方法都会发生这种情况,Some 没有什么特别之处:
def doSomething(a: Any) = {...}
doSomething(2, true, 3, false)
如果发生这种情况,您可以(而且,我认为应该;这是一个倾向于掩盖编程错误的错误功能)通过传递标志 -Ywarn-adapted-args 使编译器发出警告。有关类似推荐标志的列表,请参阅 here。
【解决方案2】:
Some(2,true,3, false) 是Some(new Tuple4(2,true,3, false)) 的语法糖。
这就是为什么类型是Some[(Int, Boolean, Int, Boolean)]
它在 22 个元素之前有效,如果您需要更多,那么您可以使用集合,而不是元组。