首页 > 学院 > 开发设计 > 正文

Scala(二)

2019-11-08 02:21:00
字体:
来源:转载
供稿:网友
package learn.scalaimport org.apache.spark.SparkConfimport scala.collection.mutable.Mapimport javax.ws.rs.core.applicationobject ChecksumAccumulator {   //Scala比Java更面向对象的一个方面是Scala没有静态成员,替代品是,Scala有单例对象  //singleton object.用 object关键字替换了class关键字    //当单例对象与某个类共享同一个名称时,它被称作是这个类的伴生对象.你必须在同一个源文件里定义类和它的伴生对象.类被称作这个单例对象的伴生类  //类和它的伴生对象可以互相访问其私有成员    //类和单例对象间的一个差别是,单例对象不带参数,而类可以。因为你不能用new关键字实例化一个单例对象,你没机会传递给它参数  //每个单例对象都被作为由一个静态变量指向的虚构类:synthetic class的一个实例来实现  //特别要指出的是,单例对象会在第一次被访问的时候初始化    //不与伴生类共享名称的单例对象被称为孤立对象:standalone object。由于很多种原因你会用到它,包括把相关的功能方法收集在一起  //或定义一个scala应用的入口点  PRivate val cache = Map[String, Int]()  def calculate(s: String): Int =    if (cache.contains(s))      cache(s)    else {      val acc = new ChecksumAccumulator      acc.sum=1      for (c <- s){//对传入的字符串的每个字符循环一次        println(c)        acc.add(c.toByte)      }      val cs = acc.get()      cache += (s -> cs)      cs    }}class ChecksumAccumulator {  //public 是scala的缺省访问级别  private var sum = 0  //b是 val类型的,不能在 add方法中再次赋值  def add(b: Int): Unit = {    sum += b  }  def get(): Int = {    sum //如果没有发现任何显示的返回语句,Scala方法将返回方法中最后一个计算得到的值.    //return sum  }}
上一篇:Scala(三)

下一篇:Scala(一)

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表