一.多继承 上篇trait中,已经看到了其用法十分灵活,可以借此实现类似"多重继承"的效果,语法格式为: class/trait A extends B with C with D ... 之所以要给多重继承加一个引号,是因为这有约束条件的,上面的语法中,从左向右看,extends 后的B是A的基本类型,不管后面接多少个trait,如果C或D,本身又继承自其它class(上一篇讲过,trait也可以继承自class),则C或D的基类必须与B的基类保持一致,否则的话,JVM上的OOP世界…
1. The three principles of OOP are encapsulation(封装性), inheritance(继承性) and polymorphism(多态性). example: class Shape{ def area: Double = 0.0 } # supertype # subtypes class Rectangle(val width: Double, val height: Double) extends Shape{ override def ar…
1.模式匹配比java中的switch case强大很多,除了值,类型,集合等进行匹配,最常见的Case class进行匹配,Master.scala有大量的模式匹配. Case "_"表示不满足上面的所有情况的体验,举个例子: def bigdata(data: String){ data match{ case "Spack"=>println("WOW!!!") case "Hadoop"=>println(…
最近在学习使用Scala语言做项目,感觉这门语言实在是太优美了!作为一个本科数学.研究生机器学习专业的混合人才(哈哈),这门语言真的是满足了普通计算机编程(告诉计算机怎么做)和函数式编程(告诉计算机做什么)的所有幻想.学了半个多月,根本停不下来!先来做个总结: 语法简洁,往往比Java少至少一半的代码量.比如: 支持自动类型判断,可以省去很多类型标志. e.g. val x = 2 用伴生对象来生成类,省去new的麻烦.e.g. val cat = Cat("Hello Ketty"…
Scala既是一门面向对象(OOP)语言,又是一门函数式编程(FP)语言.作为一门支持函数式编程的语言,Scala鼓励面向表达式编程(EOP)模型.简单来说,EOP中每个语句都有返回值.这一模式很明显,因为if/else语句就可以返回值: val result = if(a > b) a else b 1. 使用函数字面量(匿名函数) val a = List.range(1,10) val b = a.filter((i:Int) => i % 2 == 0) println(b) 结果:…