我知道这个问题以不同的方式出现过很多次.但我现在还不清楚.有没有办法实现以下目标.
def foo(a:Int, b:Int) = {}
foo(a,b) //right way to invoke foo
foo(getParams) // is there a way to get this working without explicitly unpacking the tuple??
def getParams = {
//Some calculations
(a,b) //where a & b are Int
}
Run Code Online (Sandbox Code Playgroud) 关于什么类型的归属,规范中没有太多信息,并且当然没有关于它的目的的任何信息.除了"使传递varargs工作",我会使用什么类型的归属?下面是一些scala REPL的语法和使用它的效果.
scala> val s = "Dave"
s: java.lang.String = Dave
scala> val p = s:Object
p: java.lang.Object = Dave
scala> p.length
<console>:7: error: value length is not a member of java.lang.Object
p.length
^
scala> p.getClass
res10: java.lang.Class[_ <: java.lang.Object] = class java.lang.String
scala> s.getClass
res11: java.lang.Class[_ <: java.lang.Object] = class java.lang.String
scala> p.asInstanceOf[String].length
res9: Int = 4
Run Code Online (Sandbox Code Playgroud) val prefix = "ABC"
val renamedColumns = df.columns.map(c=> df(c).as(s"$prefix$c"))
val dfNew = df.select(renamedColumns: _*)
Run Code Online (Sandbox Code Playgroud)
嗨,我对scala相当新,上面的代码可以很好地为所有列添加前缀.有人可以解释一下它是如何工作的细分吗?上面的第二行将返回col1的地图为ABCcol1,col2为ABCcol2 ....等我无法理解第三行正在做什么,特别是":_*最后.
感谢您的帮助.
val numbers = scala.collection.parallel.mutable.ParTrieMap(
(1 until 100) zip (1 until 100): _*
) map { case (k, v) => (k.toDouble, v.toDouble) }
Run Code Online (Sandbox Code Playgroud)
对于上面的代码,我知道它(1 until 100) zip (1 until 100)会返回类似于 Map 的东西,但是_*遵循它的含义是什么?