Scala基础知识笔记7-类型参数(泛型)-隐式转换-actor
1 泛型:
object FanXing { def main(args: Array[String]): Unit = { /** * 类型参数就是Java中的泛型 * 1 泛型类 * 2 泛型函数 * 3 上边界 * 4 下边界 * 5 view bounds * 6 context bounds * 7 manifest bounds * 8 协变和逆变 * 9 */ // 泛型函数 def getCard[T](content:T) = { if(content.isInstanceOf[Int]) "card num is:" + content else if(content.isInstanceOf[String]) "the card content is " + content else "card: " +content } var res = getCard("123") println(res) } } // 1 泛型类 class Student[T](var localid:T) { }
2 隐式转换:
发生的时机;
1、调用某个函数,但是给函数传入的参数的类型,与函数定义的接收参数类型不匹配
2、使用某个类型的对象,调用某个方法,而这个方法并不存在于该类型时
3、使用某个类型的对象,调用某个方法,虽然该类型有这个方法,但是给方法传入的参数类型,与方法定义的接收参数的类型不匹配
class Man(var name:String) class SuperMan(var name:String) { def fashe = println("emit soon") } object FanXing { def main(args: Array[String]): Unit = { // 定义隐式函数 /** Scala的隐式转换,其实最核心的就是定义隐式转换函数,即implicit conversion function。定义的隐式转换函数,只要在编写的程序内引入,就会被Scala自动使用。 Scala会根据隐式转换函数的签名,在程序中使用到隐式转换函数接收的参数类型定义的对象时,会自动将其传入隐式转换函数,转换为另外一种类型的对象并返回。这就是“隐式转换”。 常建议将隐式转换函数的名称命名为“one2one”的形式。 */ // 1 如下定义一个隐式函数,按照上面介绍,此方法因为前缀是implicit 会被scala自动引用 implicit def man2Super(man:Man) : SuperMan = new SuperMan(man.name) // 2 然后在程序汇总使用到上面函数的参数Man时, 会自动调用上面的隐式函数,将Man作为SuperMan对象返回 var leo = new Man("leo") // 因此leo 对象可以调用 SuperMan(非自己类)的方法的函数 leo.fashe // emit soon } }
3 Actor
posted on 2019-07-03 22:18 ligongda2006 阅读(137) 评论(0) 编辑 收藏 举报