一天一段scala代码(五)

一天一段scala代码(四)

为了更好的驾驭spark,最近在学习scala语言特性,主要看《快学scala》,顺便把一些自己认为有用的代码记下来。

package examples

class Person
{
  val publicVal = 1 //自动生成getter
  var publicVar = 2 //自动生成getter和setter

  //自定义getter和setter
  private var privateAge=0
  def age = privateAge //getter
  def age_=(newValue:Int) //setter
  {
    if(newValue>privateAge) privateAge = newValue
  }

}

/*
 * 主构造器
 */
class Person1(name:String,age:Int) //这样name和age都默认是val
{
  def info=println("name:"+name+",age:"+age)
}

class Person11(val name:String,private var age:Int)
{
  def info=println("name:"+name+",age:"+age)
}

/*
 * 辅助构造器
 */
class Person2()
{
  private var name=""
  private var age=0

  def this(name:String)=
  {
    this()//调用默认主构造器
    this.name=name
  }

  def this(name:String,age:Int)
  {
    this(name)//调用另一个构造器
    this.age=age
  }

}

object Example5 {
  def main(args: Array[String])
  {
    val person = new Person
    person.age=1//调用age的setter方法
    println(person.publicVal)//调用getter方法

    val person1 =new Person1("linger",24)//调用主构造器
    person1.info

    val person2 = new Person2("linger")//调用辅助构造器
    new Person2//调用默认的无参主构造器
  }
}

输出

1
name:linger,age:24

本文链接:http://blog.csdn.net/lingerlanlan/article/details/43455585

本文作者:linger

时间: 2024-08-08 05:12:03

一天一段scala代码(五)的相关文章

一天一段scala代码(十五)

为了更好的驾驭spark,最近在学习scala语言特性,主要看<快学scala>,顺便把一些自己认为有用的代码记下来. package examples object Example15 { //注解可以在程序中的各项条目添加信息,这些信息可以被编译器或外部工具处理. //下面是一个使用注解,指导编译器编译,为了供java方便调用. import scala.annotation.varargs @varargs def process(args:String*) {} //则编译器生成jav

一天一段scala代码(十四)

为了更好的驾驭spark,最近在学习scala语言特性,主要看<快学scala>,顺便把一些自己认为有用的代码记下来. package examples object Example14 extends App{ var ch='9' var sign= ch match{ case '+' => 1 case '-' => -1 case _ if Character.isDigit(ch) => Character.digit(ch,10) //守卫模式,加上条件 cas

一天一段scala代码(十一)

为了更好的驾驭spark,最近在学习scala语言特性,主要看<快学scala>,顺便把一些自己认为有用的代码记下来. package examples class Fraction(n:Int,d:Int) { private val num =n private val den=d def *(other:Fraction) = new Fraction(num*other.num,den*other.den) //重载称号操作符 } object Fraction { def apply

一天一段scala代码(四)

为了更好的驾驭spark,最近在学习scala语言特性,主要看<快学scala>,顺便把一些自己认为有用的代码记下来. package examples object Example4 { def main(args: Array[String]) { //不可变Map val scores= scala.collection.immutable.Map("linger"->1,"angela"->2) //scores+=("la

一天一段scala代码(三)

为了更好的驾驭spark,最近在学习scala语言特性,主要看<快学scala>,顺便把一些自己认为有用的代码记下来. package examples import scala.collection.mutable.ArrayBuffer object Example3 { def main(args: Array[String]) { val start = System.currentTimeMillis println("took " + (System.curre

一天一段scala代码(二)

为了更好的驾驭spark,最近在学习scala语言特性,主要看<快学scala>,顺便把一些自己认为有用的代码记下来. package examples import scala.util.control.Breaks._ object Example2 { def main(args: Array[String]) { //if else 语法 val s = if(1==1) 1 else 0 println(s) //代码块 val d = { val s=1+1 val g = s*2

一天一段scala代码(十三)

为了更好的驾驭spark,最近在学习scala语言特性,主要看<快学scala>,顺便把一些自己认为有用的代码记下来. package examples object Example13 extends App{ //可变集合和不可变集合 val iMap = scala.collection.immutable.Map("1"->2,"2"->2) println(iMap) println(iMap+("3"->

一天一段scala代码(九)

为了更好的驾驭spark,最近在学习scala语言特性,主要看<快学scala>,顺便把一些自己认为有用的代码记下来. package examples import scala.io.Source object Example9 extends App { val source = Source.fromFile("/home/linger/data/hive_data","UTF-8") val lines = source.getLines() f

一天一段scala代码(七)

为了更好的驾驭spark,最近在学习scala语言特性,主要看<快学scala>,顺便把一些自己认为有用的代码记下来. package examples class Angela { //包可见性 这里规定了这个方法只能再examples包内可见 //当时在spark的mllib做二次开发时遇到这个坑,mllib有些函数是包可见的,其他包访问不了. //解决方法是将自己的程序起名跟那些函数所在的包一致,比如org.apache.spark.mllib.xxxx,这样就可以访问mllib的一些类