Scala 初级入门课程一

来源:互联网 发布:童鞋淘宝网 编辑:程序博客网 时间:2024/04/30 05:36
package cn.dowhatyouwant.codes/**  * Created by DengNi on 2016/8/31.  * Scala 是动态语言,静态类型,因为难,所以用起来方便  * spark 太优秀每个人都应该去学习,使用  * 学习spark 优先推荐scala python  * 基于jvm fp + oo  * 跟java 互操作  * interpreter ==scala shell  * val  var  * var h :String ,赋值后scala 自动推断数据类型  * 函数  *  */object TestBegian { // 函数  def hello(name:String):String ={ //定义一个函数,返回类型为string    "hello " + name   //默认最后一行是return 值,所以不要加return  }  def helloScala(): Unit ={ //无参 函数前面的括号可以去掉    println("my name is  xxxx")  }  def  add=(x :Int,y:Int) => x + y  //定义一个匿名函数 ,特别重要  def add2(x :Int)(y:Int) = x*y  //柯里化  def printEveryChar(c : String*)={ //接受一系列string 类型的参数,就是可变参数    c.foreach(x=>println(x))  }  def xx(age:Int = 18)={ //调用时候如果不传入参数,就使用默认 参数  18    age  }  // main f  def main(args: Array[String]) {    //println("hello there")   // println(hello("scala"))    //helloScala //对于无参函数,在调用时候不需要括号,建议加上吧    //println(add(1,2))    //println(add2(2)(4))    //printEveryChar("a","b")    //printEveryChar("c","d","f")    //println(xx()) //只有无参函数才能去掉括号    //条件表达式 if,scala 默认是不需要分号    //val x =2    //val b = if(x >1 ) 1 else  0    //println(b)    //loop    //var (n,r) = (10,0)    //while(n > 0){    //  r =r +n    //  n = n -1    //}    //println(r)    //foreach    //for    //for ( i<-1 to 100){    //  print(i)    //  println()    //}    //for ( i<-1 until 10){ //不包含上线 10 ,这是跟to 的区别     // print(i)     // println()    //}    //for (i <- 1 to 100 if i%2 == 0){ //打印偶数  for 跟 if 表达式的合用      //println(i)    //}    //循环表达式没有 continue and break    //val p =new Person  //没有构造函数的时候 类的括号可以省略    //p.name="hidoyouO"    //print(p.name+":" + p.age)    //val p = new Person("hijack",18) // new 变量的时候会打印 this is the primary constructor!    // println(p.age + p.name)    //val p = new Person("hijack",18,"f")    //println(p.gender+p.name)    val s = new Student("hijck",18,"Eng")//其实是初始化所有的方法和属性    println(s.toString)  }}class TestBegian{ //所有类默认是public 的}//class Person{  //var name :String = _ //此时 String 是不能去掉的 // var name :String = "hijack"  //var 定义的变量系统会自动生成geter &setter 方法  //val age = 18    //val 定义的变量只会生成getter方法  ,符合我们的不能重新赋值的理念  //private[this] var gender ="122"   //变量只能在Person 内使用,main 方法中的对象不能调用//}//1.主构造器,直接跟在类名后面,主构造器的参数最后会编译成类的字段//2.主构造器执行的时候,会执行类中所有的语句//3.假设参数声明时候不带var or val ,那么声明的变量相当于private【this】,只能在//在类中使用, class Person ( name :String,val age  : Int) 《= nameclass Person (val name :String,val age  : Int){  println("this is the primary constructor!")  var gender : String = _  //辅助构造器名称wei this  //每一个附属构造器必须首先调用已经存在的子构造器或是主构造器  def this(name : String,age : Int,gender : String){    this(name,age)    this.gender=gender  }}//继承//name age 是继承来的  ,major 是student 类特有的,所以需要使用val 定义class Student(name:String,age :Int,val major :String) extends Person(name, age){  println("this is the subclass of Person,major is " + major)  //重写父类的方法 和 字段  同时保持跟父类保持相同的数据类型  override  def toString = "this from student"}







0 0
原创粉丝点击