Scala中的隐式转换

上节课的补充:
算子=函数=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:我们不一样")
    }
  }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值