上节课的补充:
算子=函数=API
Currying(颗粒化):作用是将两个参数的函数,转换成两个函数,第一个函数的参数为两个参数函数的第一个参数,同理,第二个函数的参数为第二个参数。
scala> def sum(x:Int,y:Int) = x + y
sum: (x: Int, y: Int)Int
scala> sum(1,2)
res16: Int = 3
scala> def sum_Currying(x:Int) = (y:Int) => x + y
sum_Currying: (x: Int)Int => Int
scala> sum_Currying(1)(2)
res17: Int = 3
scala> def sum_Currying_Better(x : Int)(y : Int) = x + y
sum_Currying_Better: (x: Int)(y: Int)Int
scala> sum_Currying_Better(1)(2)
res18: Int = 3
隐式转换:(能不用就不用,对于维护极其不友好)偷偷的给你做点什么
def main(args: Array[String]): Unit = {
val one=new tea("奶茶")
//将tea隐式转换为milktea,一般把这条语句抽取出去放到一个专门用于存储
//隐式转换语句的类里,需要用到时导入该类直接引用,方便维护与修改。
//隐式转换的名字格式一般为a2aa,btobb(为了直观形象)
implicit def tea2milkTea(one:tea):milkTea=new milkTea(one.name)
//转换后有了milktea里的speak方法
one.speak()
}
class tea(val name:String)
class milkTea(val name:String) {
def speak() {
println(s"$name:我们不一样")
}
}
抽取出去后导入类引用的代码:
def main(args: Array[String]): Unit = {
val one=new tea("奶茶")
import implicitClass.tea2milkTea
one.speak()
}
class tea(val name:String)
class milkTea(val name:String) {
def speak() {
println(s"$name:我们不一样")
}
}