结合代码理解Scala的隐式转换

Scala的隐式转换

github传送门:https://github.com/ZzzzZzreal/ScalaDemo/blob/master/src/main/scala/Day04/Demo.scala

/**
  * Implicit
  * Scala的隐式转换
  */
object Demo extends App {

  class SwingType {
    def wantLearned(sw: String) = println("兔子已经学会了" + sw)
  }

  object swimming {
    implicit def learningType(s: AminalType) = new SwingType
  }

  class AminalType {
    def show() = println("-----")
  }

  import swimming._

  val a = new AminalType
  a.show()
  a.wantLearned("狗刨式")

  //-----以上都是因式转换的普通用法,包括隐式转换参数,隐式声明数据类型转换,通过导包来完成隐式转换

  /**
    * 以下代码通过使用隐式类实现将一句话每个单词首字母大写其它字母小写的功能,感受一下
    */
  object Stringutils {

    implicit class StringImprovement(val s: String) { //隐式类
      def increment = s.map(x => (x + 1).toChar)

      def firstUpper = s(0).toUpper.toString + s.substring(1).toLowerCase

      def allFirstUpper = {
        val words = s.split(" ")
        words.map(f => {
          if (f.contains(",")) {
            f.split(",").map(_.firstUpper).mkString(",")
          } else f.firstUpper
        }).mkString(" ")
      }

      def show(id: Int) = println(id, s)
    }

  }

  import Stringutils._

  println("qUJIa is a boy,but,aUIOhjkl he love boys!!!!".allFirstUpper)
  //-------上面这个例子,其实就是将一个类隐式声明,然后这个类里的所有方法,只要在import的情况下,可以直接使用----//

  /**
    * 以上代码的运行结果:
    * -----
    * 兔子已经学会了狗刨式
    * Qujia Is A Boy,But,Auiohjkl He Love Boys!!!!
    */
}
参考博客:http://www.cnblogs.com/MOBIN/p/5351900.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值