当我阅读火花源代码here时,我看到了$(a_variable)
之类的代码。
这是什么意思?
我在这里复制代码:
final val blockSize: IntParam = new IntParam(this, "blockSize",
"Block size for stacking input data in matrices. Data is stacked within partitions." +
" If block size is more than remaining data in a partition then " +
"it is adjusted to the size of this data. Recommended size is between 10 and 1000",
ParamValidators.gt(0))
/** @group getParam */
final def getBlockSize: Int = $(blockSize)
答案 0 :(得分:22)
这不是特殊的Scala语法,它是一个方法名称。在Scala $
是一个合法的标识符。该方法继承自org.apache.spark.ml.param.Param
特征。
请参阅source。
答案 1 :(得分:1)
我相信美元符号通常用于字符串插值。这意味着如果我想在字符串内使用val(ue)/ var(iable)(在第一个双引号前用s
表示),我可以使用{{ 1}}号。否则,我们将无法在字符串内使用vals / vars,因为它将不知道如何转义字符串字符。
示例:
$
但是,在您的情况下,val favoriteFruit = "strawberry"
val strawberryCount = 12
println(s"My favorite fruit is ${favoriteFruit}. I've had ${strawberryCount} pieces today!") // string interpolation
似乎是{/ {1}} var / val的快捷方式(由@Michael Zajac和@kingledion提供...获取值/变量。不存在,获取默认值/变量)。如果您希望参数并不总是具有对应的值(可以为其设置默认值),则使用$
可能是更可靠的解决方案。