`

学习scala笔记--30 隐式转换 隐式参数

 
阅读更多

 

 

 

 

隐式转换

 

 

 

scala> class Student(name:String)

defined class Student

 

scala> import scala.language.implicitConversions

import scala.language.implicitConversions

 

scala>  implicit def  str2Student(name:String)= new Student(name)

str2Student: (name: String)Student

 

scala> def sayHello(s:Student){ println(" hello ")}

sayHello: (s: Student)Unit

 

scala> val s = new Student("tom")

s: Student = Student@17bf3182

 

scala> sayHello(s)

 hello 

 

scala> sayHello("just a test")

 hello 

 

  

 

 

----------------------------------

 

隐式转换加强现有类型

 

 

scala> class Man(val name:String)

defined class Man

 

scala> class SuperMan(val name:String){ def emitLaser=println(" emit laser ")}

defined class SuperMan

 

scala>  import scala.language.implicitConversions

import scala.language.implicitConversions

 

scala> implicit def man2superman(man:Man):SuperMan = new SuperMan(man.name)

man2superman: (man: Man)SuperMan

 

scala> 

 

scala> val s= new Man(" man ")

s: Man = Man@5d74507c

 

scala> s.emitLaser

 emit laser  

 

 

 

 

 默认会使用两种隐式转换: 一种是源或者目标类的 伴生对象内的隐式转换函数  

                          另一种是 当前程序作用域内的可以用唯一标识符表示的隐式转换函数

  

 上述两种情况找不到 就必须手动 import 

 

 

----------------------------------

  

 隐式参数

 

 

 

 

scala> class SignPen { def writ(content :String)=println(content)}

defined class SignPen

 

scala> implicit val signPen = new SignPen

signPen: SignPen = SignPen@3bf4644c

 

 

scala> def signForExam(name:String)(implicit signPen:SignPen) { signPen.writ(name+ "come to exam in time")}

signForExam: (name: String)(implicit signPen: SignPen)Unit

 

scala> 

 

scala> signForExam("tomcat")

tomcatcome to exam in time

分享到:
评论

相关推荐

    Scala-学习资料-mht.rar

    1. 类型系统:Scala的类型系统非常强大,支持静态类型检查,同时也允许隐式转换和类型推断,这使得编写代码时可以减少类型声明的繁琐。 2. 面向对象:Scala是面向对象的语言,支持类、对象、继承、封装和多态。同时...

    scala学习笔记整理

    7. **类型系统**:Scala具有复杂的类型系统,包括类型参数化(Generics)、类型推导、类型别名、类型成员、隐式转换等。这些特性使得Scala在编写泛型代码和高级类型操作时具有很高的灵活性。 8. **模式匹配**:...

    读书笔记:基本的scala编程其中包含隐式转换和Actor编程.zip

    读书笔记:基本的scala编程其中包含隐式转换和Actor编程

    Scala详细总结(精辟版++)

    Scala支持隐式转换和隐式参数,可以自动将一个类型转换为另一个类型,或者在函数调用时自动提供某些参数。 #### 类型参数化 Scala中的类型参数化允许开发者创建泛型类和函数,从而编写更加通用的代码。 #### 类型...

    scala学习笔记

    - **隐式转换**:通过 `implicit` 关键字定义隐式转换规则,可以在编译时自动转换类型。 - **延迟初始化**:使用 `lazy` 关键字定义变量,该变量只在首次使用时计算并存储结果。 - **异常处理**:Scala 提供了丰富的...

    scala-learn:scala学习笔记

    Scala的类型系统十分强大,包括类型推断、类型参数、隐式转换等特性。深入理解这些内容有助于编写出更加简洁和安全的代码。 9. **Option类型** Option是Scala处理null安全的方式,避免了常见的空指针异常。学会...

    SCALA从入门到精通个人笔记含代码

    目录如下 Scala简介&快速入门 基础语法 变量 数据类型 流程控制 操作符重载 模式匹配 函数式编程基础 ... 隐式转换和隐式值 偏函数 高阶函数 闭包closure 柯里化函数 控制抽象 递归高级 Akka 介绍

    bigdata-scala-examples:Bigdata RDF 数据库 scala 测试和示例

    大数据 Scala 示例 只是一个带有 BigData 测试示例的 repo。 入门 0)....一些隐式转换用于查询结果,考虑查看简单的包对象 如果您不熟悉示例中使用的 ScalaTest,请查看如果您不擅长 Scala,请查看

    Scala笔记Markdown版本(至集合章节)

    总结,本Scala笔记Markdown版本涵盖了从语言基础到集合操作的重要内容,适合初学者入门和有经验的开发者巩固知识。通过学习,开发者将能够掌握Scala的核心特性和编程技巧,从而更好地利用Scala进行后端开发。

    MyScalaStep:一步步记录我学习scala

    同时,Scala的类型系统还允许我们创建复杂的类型构造,如类型类和隐式转换,这些在处理领域特定语言(DSL)时尤其有用。 在"ScalaStep"的学习过程中,你会接触到Actor模型,这是Scala对并发编程的一种独特解决方案...

    超全大数据面试宝典-大数据面试有这套就够了.pdf

    - **Scala相关总结**:介绍Scala中的元组、隐式转换、函数式编程、样例类、柯里化、闭包以及Option的使用,Scala是大数据处理中重要的编程语言之一。 以上便是“超全大数据面试宝典-大数据面试有这套就够了.pdf”...

    Spark学习笔记之Spark SQL的具体使用

    Spark SQL学习笔记 Spark SQL是Apache Spark平台下的一个模块,提供了一个编程抽象叫做DataFrame,并且作为分布式SQL查询引擎的作用。Spark SQL是Spark平台下的一个重要组件,主要用于处理结构化数据。 Spark SQL...

Global site tag (gtag.js) - Google Analytics