首页 > 代码库 > Scala对象
Scala对象
单例对象
Scala没有静态方法或静态字段,你可以用object这个语法结构来达到同样目的,
object HelloWorld { private var lastNumber = 0 def newUniqueNumber()={lastNumber+=1;lastNumber} }使用的时候直接调用HelloWorld.newUniqueNumber()即可。对象的构造器在该对象第一次被使用时调用,如果一个对象从未被使用,那么其构造器也不会被执行。在Scala中用对象可以来实现:
- 作为存放工具函数或常量的地方
- 高效地共享单个不可变实例
- 需要用单个实例来协调某个服务时
类和它的伴生对象可以相互访问私有特性,它们必须存在于同一个源文件中。调用方式:Account.newUniqueNumber()来调用伴生对象的方法
class Account{ } object Account{//伴生对象 private var lastNumber = 0 private def newUniqueNumber()={lastNumber+=1;lastNumber} } |
apply方法
当Object(参数1,...,参数N),通常这样一个apply方法返回的是伴生类的对象。Array(100)和new Array(100)很容易搞混。前一个调用的是apply(100),输出一个单元素的Array[Int],而第二个调用的是构造器this(100),结果是Array[Nothing],它包含了100个null元素。
应用程序对象
每个Scala程序都必须从一个对象的main方法开始,方法类型为Array[String]=>Unit:
object Hello{ def main(args : Array[String]){ println() } } |
object Hello extends App{ def main(args : Array[String]){ println() } } |
Enumeration
object MyEnum extends Enumeration { //定义三个字段,然后用Value调用将它们初始化,每次调用Value都返回内部类的新实例,该内部类也叫做Value,或者你也可以向Value方法传入ID/名称/两个参数都传 val Red, Yellow, Green = Value } object Hi { def main(args: Array[String]) { //可以通过如下语句直接引入枚举值 //import MyEnum._ //记住枚举的类型是MyEnum.Value而不是MyEnum //type MyEnum = Value //此句话用来设置类型别名,这样的话,枚举的类型就变成了MyEnum.MyEnum //枚举值的ID可通过id方法返回,名称通过toString方法返回,对MyEnum.values的调用输出所有枚举值的集合 //可以通过枚举的ID或名称来进行查找定位,以下两句输出内容一样 println(MyEnum(0)) println(MyEnum.withName("Red")) } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。