小编Pun*_*tan的帖子

在Scala中$()的含义是什么?

当我从apache-spark读取代码时遇到这种情况:

    val alpha = new DoubleParam(this, "alpha", "alpha for implicit preference",
                                ParamValidators.gtEq(0)) 
    /** @group getParam */
    def getAlpha: Double = $(alpha)
Run Code Online (Sandbox Code Playgroud)

我已经在网上搜索了很长时间但是仍然无法找到$(alpha)这里意味着什么的好解释?它如何为自定义的类DoubleParam变量赋值Double?谢谢!!

仅供参考,该DoubleParam课程定义为:

class DoubleParam(parent: String, name: String, doc: String, isValid: Double => Boolean)
  extends Param[Double](parent, name, doc, isValid) {

  def this(parent: String, name: String, doc: String) =
    this(parent, name, doc, ParamValidators.alwaysTrue)

  def this(parent: Identifiable, name: String, doc: String, isValid: Double => Boolean) =
    this(parent.uid, name, doc, isValid)

  def this(parent: Identifiable, name: …
Run Code Online (Sandbox Code Playgroud)

scala apache-spark

7
推荐指数
1
解决办法
889
查看次数

在Scala中存在类型的下划线

我读过一篇关于Scala中存在类型的博客:Scala中的存在类型

在这篇博客中,它提到了一个例子:

Map[Class[T forSome { type T}], String]
Map[Class[T] forSome { type T}, String]
Map[Class[T], String] forSome { type T}
Run Code Online (Sandbox Code Playgroud)

他的解释."第三个是所有地图类型的超类型,因此有一些T使得它们是Map [Class [T],String].再次,我们在地图中为键提供了一些固定的类类型 - 它是只是这次我们不知道它是什么类型.但是中间的类型具有Class [T]类型的键,用于某些{类型T}.也就是说,它的键是允许具有他们想要的任何值的类.类型参数.这就是我们真正想要的."

解释并不容易.代码示例中第二个和第三个之间有什么区别?有人能给我们一些例子吗?

博客还提到了Map[Class[_], String]相当于示例中的第三个,当我们真正想要第二个时.当我们_用于存在类型时,这会影响语义吗?

scala existential-type

6
推荐指数
1
解决办法
546
查看次数

可以在scala中定义变量吗?

当我阅读Spark的源代码时,我在RDD类中看到了这一点:

def getStorageLevel = storageLevel
Run Code Online (Sandbox Code Playgroud)

这句话是什么意思?

它是否定义了一个变量?如果是,为什么我们不使用var?或者它是一个功能?如果是,为什么他们不同时定义参数和返回值?

scala apache-spark

1
推荐指数
1
解决办法
117
查看次数

在Scala中输入Any和String之间的不匹配

def foo(x : Array[Any]) = println(x.length);
foo(Array[String]("test", "test"));
Run Code Online (Sandbox Code Playgroud)

此代码将引发错误消息:

:6: error: type mismatch;

found   : Array[String]

 required: Array[Any]
       foo(Array[String]("test", "test"))
Run Code Online (Sandbox Code Playgroud)

Scala中的所有类都直接或间接地从Any类继承.所以String是Any.为什么我们不能将Array [String]传递给foo方法?

scala type-mismatch

0
推荐指数
1
解决办法
669
查看次数