相关疑难解决方法(0)

Scala中的"new"关键字

我有一个非常简单的问题 - 在Scala中创建对象时应该何时应用new关键字?是在我们尝试仅实例化Java对象时?

scala keyword new-operator

89
推荐指数
2
解决办法
3万
查看次数

Scala:伴侣对象的目的

可能重复:
在Scala中拥有伴随对象的理由是什么?

感谢您对我之前帖子的所有回复(Scala:伴侣对象和"new"关键字).我想问一下Scala中伴随对象的一般用途是什么?首先,我们是否可以在类本身的构造函数/方法定义的形式中包含所有方法,例如apply?此外,伴随布尔对象有什么意义,因为它甚至没有定义apply方法?

再次感谢您的所有回复.

scala class object

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

scala case class equals(==)没有按预期工作

我必须在这里遗漏一些愚蠢的东西.我有这个:

case class Color(val rgb:Int) {
   private val c = rgb - 0xff000000
   val r = (c & 0xff0000) >> 16
   val g = (c & 0x00ff00) >> 8
   val b = (c & 0x0000ff)
}

case object Red extends Color(0xffff0000)
case object Green extends Color(0xff00ff00)
case object Blue extends Color(0xff0000ff)
Run Code Online (Sandbox Code Playgroud)

然后我希望这打印真实:

val c = Color(0xff00ff00)
println(c == Green)
Run Code Online (Sandbox Code Playgroud)

为什么不呢?

scala equality case-class

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

Scala(单例)对象与典型的类级工件有什么好处

我理解使用对象的一个​​主要好处是,它们是真实对象而不是系统范围的功能.但最后这些对象也可以在系统范围内访问.

除了更"纯粹" scala"对象"提供的额外好处之外.

我打赌有一个数字,但我无法弄明白哪个.

singleton scala

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

我可以在伴侣对象中使用"this"吗?

在一个伴侣对象中,我希望有一个字段记录从伴侣类中实例化的所有实例(它是抽象的),我可以这样做吗?

特别是,我认为this会引用子类的任何实例,但是当我在伴随对象中使用它时它将不会编译.

scala companion-object

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

了解Scala中的一些和选项

我正在从他们的文档中读到这个例子:

class Email(val username: String, val domainName: String)

object Email {
  def fromString(emailString: String): Option[Email] = {
    emailString.split('@') match {
      case Array(a, b) => Some(new Email(a, b))
      case _ => None
    }
  }
}

println(Email.fromString("scala.center@epfl.ch"))
val scalaCenterEmail = Email.fromString("scala.center@epfl.ch")
scalaCenterEmail match {
  case Some(email) => println(
    s"""Registered an email
       |Username: ${email.username}
       |Domain name: ${email.domainName}
     """)
  case None => println("Error: could not parse email")
}
Run Code Online (Sandbox Code Playgroud)

我的问题:

  1. 什么是SomeOption

  2. 什么是工厂方法(只是一些创建新对象并返回它的函数?)

  3. 伴侣对象有什么意义?是否只包含可用于所有类实例的函数?他们喜欢Ruby中的类方法吗?

scala

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

无法在IntelliJ中运行Scala应用程序

我正在尝试运行一个简单的Scala代码段,

package example

class HelloWorld extends App {
  println("Hello world")
}
Run Code Online (Sandbox Code Playgroud)

在安装了Scala的IntelliJ IDE中.但是,"运行"按钮显示为灰色,我也没有在上下文菜单中看到它(未在下面的屏幕抓取中显示).

在此输入图像描述

根据无法使用Intellij IDEA运行Java代码的答案,代码位于src标记为蓝色的文件夹中.(我也尝试将其标记为'测试'文件夹,但无济于事).我错过了什么?

scala intellij-idea

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