scala自定义隐式转换

Scala自定义隐式转换

一、编写隐式转换类

/**
  * Author Mr. Guo
  * Create 2019/4/20 - 17:40
  */
object StringImprovments {

  implicit class StringImprove(s: String) {
    def increment = s.toString.map(c => (c + 1).toChar)
  }

  implicit class Intc(i: Int) {
    def xx = {
      Integer.parseInt(i.toString) + 4
    }
  }

  implicit class arrStrToArrInt(arr: Array[String]) {
    def toArrInt = {
      arr.map(arr => arr.toInt)
    }
  }

  implicit class arrStrToArrDouble(arr: Array[String]) {
    def toArrDouble: Array[Double] = {
      arr.map(ar => {
        try {
          ar.toDouble
        } catch {
          case x: Exception => 0.0
        }
      })
    }
  }
}

二、隐式函数的调用

/**
  * Author Mr. Guo
  * Create 2019/4/20 - 16:44
  */
object OperatorStr {

  def operatorStr() = {
    import unitlOne.StringImprovments._
    val str2 = "HCL"
    val int1 = 3
    val arrs = Array[String]("")
    println(str2.increment)
    println(int1.xx)
  }
}

  

原文地址:https://www.cnblogs.com/Gxiaobai/p/10896454.html

时间: 2024-10-10 06:04:50

scala自定义隐式转换的相关文章

自定义隐式转换和显式转换c#简单例子

自定义隐式转换和显式转换c#简单例子 (出自朱朱家园http://blog.csdn.net/zhgl7688) 例子:对用户user中,用户名first name和last name进行转换成合成一个限定长度为10个字符新name. 自定义隐式转换: namespace transduction { public partial class transductionForm : Form { public transductionForm() { InitializeComponent();

ahjesus自定义隐式转换和显示转换

implicit    关键字用于声明隐式的用户定义类型转换运算符. 如果可以确保转换过程不会造成数据丢失,则可使用该关键字在用户定义类型和其他类型之间进行隐式转换. 参考戳此 explicit    关键字用于声明必须使用强制转换来调用的用户定义的类型转换运算符. 参考戳此 有一点要注意的是,一个类中不能同时写显式和隐式声明,只能是其中一个. 但是如果声明了隐式的转换,那么其对应的显示转换也会自动提供. 如果声明了显式转换,其对应的隐式转换不会提供的.  ahjesus自定义隐式转换和显示转换

转载:深入理解Scala的隐式转换系统

摘要: 通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码. 使用方式: 1.将方法或变量标记为implicit 2.将方法的参数列表标记为implicit 3.将类标记为implicit Scala支持两种形式的隐式转换: 隐式值:用于给方法提供参数 隐式视图:用于类型间转换或使针对某类型的方法能调用成功 隐式值: 例1:声明person方法.其参数为name,类型String

深入理解Scala的隐式转换系统

摘要: 通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码. 使用方式: 1.将方法或变量标记为implicit 2.将方法的参数列表标记为implicit 3.将类标记为implicit Scala支持两种形式的隐式转换: 隐式值:用于给方法提供参数 隐式视图:用于类型间转换或使针对某类型的方法能调用成功 隐式解析机制 即编译器是如何查找到缺失信息的,解析具有以下两种规则: 1

Scala之隐式转换implicit详解

假设我们有一个表示文本的行数的类LineNumber: class LineNumber ( val num : Int ) 我们可以用这个类来表示一本书中每一页的行数: val lineNumOfPage1 = new LineNumber(112) val lineNumOfPage2 = new LineNumber(120) 上面的代码分别表示了第一页和第二页的行数.当然,我们也应该可以将它们相加,得到这两页的总行数: val totalLineNum = lineNumOfPage1

IDEA的auto import 与 Scala的隐式转换

设置IDEA的auto import 之后,编写Spark应用程序时的一些自动导入情况及其说明. 1.普通类的自动导入 var cnames = new ArrayBuffer[String]() var ips = new ArrayBuffer[String]() 直接根据提示alt+enter便可以导入ArrayBuffer类包 2.需要隐式转换 val joinRDD = reqRDD.join(respRDD).map(x => (x._2._1, x._2._2)).reduceBy

Scala特性: 隐式转换

1.隐式转换特征: 1)隐式参数的用法 · 获取可能的预期类型 · 获取预期类型,并且拥有预期类型的行为 · 对信息进行补充说明(一般用函数做隐式参数的比较多) 2)隐式类: 3)隐式method:

scala学习笔记-隐式转换与隐式参数(18)

Scala提供的隐式转换和隐式参数功能,是非常有特色的功能.是Java等编程语言所没有的功能.它可以允许你手动指定,将某种类型的对象转换成其他类型的对象.通过这些功能,可以实现非常强大,而且特殊的功能. Scala的隐式转换,其实最核心的就是定义隐式转换函数,即implicit conversion function.定义的隐式转换函数,只要在编写的程序内引入,就会被Scala自动使用.Scala会根据隐式转换函数的签名,在程序中使用到隐式转换函数接收的参数类型定义的对象时,会自动将其传入隐式转

Scala隐式转换类遇到的问题

今天练习Scala的隐式转换类遇到的一个问题,测试代码如下: object ImplcitTest { def main(args: Array[String]) { import Context._ val person1 = User("zhangsan") println(person1.getStr()) val filePath = Thread.currentThread.getContextClassLoader.getResource("test.txt&qu