【发布时间】:2018-04-20 15:17:50
【问题描述】:
我正在从他们的docs 阅读这个例子:
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")
}
我的问题:
什么是
Some和Option?什么是工厂方法(只是一些创建新对象并返回它的函数?)
伴生对象有什么意义?它只是包含对所有类实例都可用的函数吗?它们像 Ruby 中的类方法吗?
【问题讨论】:
-
Factory 是一种设计模式,并不特定于 Scala。关于剩下的问题,有几本关于scala的好书和教程,随便搜索:stackoverflow.com/questions/609744/…danielwestheide.com/blog/2012/12/19/…
-
选项是一个Algebraic Data Type,在函数式编程中,函数被设计为不会将函数破坏为错误,而是安全/一致地返回相同类型的数据,以便您稍后处理它,更多关于@ 987654325@。就像在 Int 中一样,您可以在 Option 中返回值 ...-2323,...,1,2,3... 如果成功则返回 Some ,如果失败则返回 None 。
-
如果您有多个问题,请提出多个问题。特别是,我们的三个问题中的每一个都已经在Stack Overflow 上被多次询问和回答,但是使用内置的重复系统不可能指出这些问题,因为您的问题将它们混合在一起。 Stack Overflow 的重要特征之一是可以通过多个不同的问题获取知识,但您的问题会破坏该系统。
-
您不应该阅读一个好的介绍/教程,而不是阅读您不理解的文档并运行任何 Scala 初学者都可以回答的问题吗?
标签: scala