`
zk_chs
  • 浏览: 215483 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

scala 隐式转换函数、隐式转换参数

阅读更多

目前的scala相关博客大概只能算一个笔记,方便自己记录,也帮大家查找信息了。

 

首先scala中的隐式转换可以分为隐式函数转换与隐式参数转换两类,下面就来分别说一下自己对这两种模式的理解。

 

1、隐式函数转换,我们先看一段代码:

scala> val x: Int = 3.14
<console>:10: error: type mismatch;
 found   : Double(3.14)
 required: Int
       val x: Int = 3.14
                    ^

在这里,我们并不能给一个Int类型的变量赋一个Double类型的值,scala不支持默认的转换。如果我们想要将这个Double的值转换成Int的话,那么隐式函数转换便能完成这个任务了,我们首先定义一个隐式转换函数:

implicit def double2Int(x: Double): Int = x.toInt // implicit关键字用来声明隐式转换

 

这样一来,我们上面的程序便能成功运行了,如图:

当然,我们还能对这个隐式转换函数进行更多的修改,比如实现floor,ceil等功能

 

2、隐式参数转换,同样看一段代码:

def total(a: Int, b: Int) = a + b
val t = total(3, 0) // 3

 

在这里,我们的total有两个参数,在调用的时候需要传入两个参数才行。但是,有时候我们只需要一个参数就够了,另外一个参数使用一个定义好的值,那么,我们可以为total定义一个隐式参数:

implicit val x: Int = 0 // implicit关键字用来声明隐式转换
def total(a: Int)(implicit b: Int) = a + b // 柯里化
total(3)(0) // 3
total(3) // 3

此时,我们为函数total定义了一个隐式参数b,同样时使用implicit关键字进行隐式转换的声明。

 

通过上述代码,我们看到total(3)(0)与total(3)是相同的,这便是我们的隐式参数转换了,隐式参数转换使我们多了选择,你可以在需要的时候再传入值,此时隐式参数便不会自动传入函数中了。

 

3、总结:

隐式函数转换主要用于方法中参数与实际类型不匹配的情况,另外,当你调用类中不存在的方法时,也会尝试隐式转换。

隐式参数转换则用于可选参数的情况,不想传递参数时,便使用定义的隐式值。

 

 

  • 大小: 52.2 KB
0
2
分享到:
评论

相关推荐

    scala 隐式转换与隐式参数的使用方法

    Scala 隐式转换与隐式参数的使用方法 Scala 中的隐式转换与隐式参数是两个非常重要的概念,它们可以帮助开发者编写更加简洁、灵活和可维护的代码。本文将详细介绍 Scala 中隐式转换与隐式参数的使用方法,并通过...

    debugging-scala-implicits-in-intellij:如何在IntelliJ中调试Scala隐式转换和参数

    在IntelliJ中调试Scala隐式 本文档概述了用于静态... 突出显示适当的隐式转换函数。 ALT + ENTER (然后按ENTER选择“显式”)。 执行步骤。 查看无隐式代码 这是不得已的方法:它显示“未散布”的Scala代码,如果您

    scala隐式.docx

    Scala是一种强大的函数式编程语言,它的特色之一就是对隐式参数和隐式转换的支持。在Scala中,隐式参数和隐式转换极大地增强了代码的简洁性和可读性,同时也为类型系统提供了更大的灵活性。 **隐式参数**: 在Scala...

    Scala编程详解 第20讲-Scala编程详解:隐式转换与隐式参数 共9页.pptx

    【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4...共13页第20讲-Scala编程详解:隐式转换与隐式参数 共9页第21讲-Scala编程详解:Actor入门 共8页

    scala中的隐式类型转换的实现

    如果在同一作用域里,对同一源类型定义一个以上的隐式转换函数,如果多种隐式转换函数都可以匹配,那么编译器将报错。 四、隐式类型转换的应用 隐式类型转换可以广泛应用于实际开发中,例如,在进行数学运算时,...

    Scala编程详解 第6讲-Scala编程详解:函数入门之默认参数和带名参数 共5页.pptx

    【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4...共13页第20讲-Scala编程详解:隐式转换与隐式参数 共9页第21讲-Scala编程详解:Actor入门 共8页

    Spark技术实战之基础篇 -Scala语言从入门到精通 Scala编程详解 含课件和资料 共21个章节.rar

    【课程大纲】第1讲-Spark的前世今生第2讲-课程介绍、特色与价值第3讲-Scala编程:基础语法第4讲-Scala编程:...模式匹配第19讲-Scala编程:类型参数第20讲-Scala编程:隐式转换与隐式参数第21讲-Scala编程:Actor入门

    Scala编程详解 第7讲-Scala编程详解:函数入门之变长参数 共4页.pptx

    【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4...共13页第20讲-Scala编程详解:隐式转换与隐式参数 共9页第21讲-Scala编程详解:Actor入门 共8页

    Scala 专题教程 - 隐式变换和隐式参数-内含源码以及设计说明书(可以自己运行复现).zip

    隐式变换是Scala中的一种特殊转换机制,它允许开发者在不显式调用转换函数的情况下,自动将一个类型的值转换为另一种类型。这通常发生在类型不匹配时,如果存在一个合适的隐式转换,编译器会尝试自动应用这个转换。...

    Scala函数式编

    Scala的隐式转换允许在不显式调用转换方法的情况下,将一个类型的对象转换为另一种类型。这对于函数式编程来说非常有用,因为它可以让不同数据类型之间的操作更加流畅。 尾递归优化 Scala支持尾递归优化,即当递归...

    Scala—— 12.隐式转换

    隐式转换函数是以implicit关键字声明的带有单个参数的函数,这种函数将会自动应用,将值从一种类型转换为另一种类型。 object boke_demo01 { def main(args: Array[String]): Unit = { //编写一个隐式函数转成 ...

    Scala编程详解 第5讲-Scala编程详解:函数入门 共5页.pptx

    【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4...共13页第20讲-Scala编程详解:隐式转换与隐式参数 共9页第21讲-Scala编程详解:Actor入门 共8页

    Scala编程详解 第16讲-Scala编程详解:函数式编程 共14页.pptx

    【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4...共13页第20讲-Scala编程详解:隐式转换与隐式参数 共9页第21讲-Scala编程详解:Actor入门 共8页

    scala高级特性

    隐式转换和隐式参数是 Scala 中两个非常强大的功能,利用隐式转换和隐式参数,你可以提供优雅的类库,对类库的使用者隐匿掉那些枯燥乏味的细节。 概念 隐式转换是指那种以 implicit 关键字声明的带有单个参数的...

    Scala编程详解 第17讲-Scala编程详解:函数式编程之集合操作 共9页.pptx

    【课程大纲】第1讲-Spark的前世今生 共12页第2讲-课程介绍、特色与价值 共13页第3讲-Scala编程详解:基础语法 共8页第4...共13页第20讲-Scala编程详解:隐式转换与隐式参数 共9页第21讲-Scala编程详解:Actor入门 共8页

    快学Scala课后习题答案

    10. **隐式转换**:Scala的隐式转换可以将一种类型自动转换为另一种类型,当需要某类型但实际提供的是另一种类型时,隐式转换可以发挥作用。 这个"快学Scala课后习题答案集合"资源将帮助学习者核对自己的解答,理解...

    Scala - Implicit Conversion.docx

    以下是关于Scala隐式转换的详细说明: 1. **隐式转换定义(implicit def)**: 隐式转换通常通过`implicit def`定义,它看起来像一个函数,但会被编译器自动应用在适当的地方。例如: ```scala object ...

    1、scala面试题(25问).pdf

    Scala语言中的隐式转换函数是指那种以implicit关键字申明的带有单个参数的函数,这样的函数会被自动应用,将值从一种类型转换为另一种类型。 7. 伴生类和伴生对象 在Scala语言中,单例对象与类同名时,该对象被...

    scala实战高清讲解

    - 隐式转换:Scala允许隐式参数和隐式转换,有助于代码简洁性,但需谨慎使用以避免混淆。 - 类型推断:Scala具有强大的类型推断能力,允许编写更少的类型声明,提高代码可读性。 - 泛型:泛型提供了一种方式来...

    Scala函数式编程 2016年4月 电子工业出版

    很抱歉,您提供的文件内容...- 隐式转换:允许在程序中自动地将一种类型的值转换成另一种类型。 如果可以提供更多有关书籍的具体内容,我将能够更准确地解释和扩展这些概念,以提供一个超过1000字的详细知识点介绍。

Global site tag (gtag.js) - Google Analytics