隐式转换由 scala.Conversion
类的 given
实例定义。
例如,不考虑可能的转换错误,这段代码定义了从 String
到 Int
的隐式转换:
given Conversion[String, Int] with
def apply(s: String): Int = Integer.parseInt(s)
使用别名可以更简洁地表示为:
given Conversion[String, Int] = Integer.parseInt(_)
使用这些转换中的任何一种,您现在可以在需要 Int
的地方使用 String
:
import scala.language.implicitConversions
// a method that expects an Int
def plus1(i: Int) = i + 1
// pass it a String that converts to an Int
plus1("1")
注意开头的子句
import scala.language.implicitConversions
, 在文件中启用隐式转换。
讨论
Predef 包包含“自动装箱”转换,将基本数字类型映射到 java.lang.Number
的子类。
例如,从 Int
到 java.lang.Integer
的转换可以定义如下:
given int2Integer: Conversion[Int, java.lang.Integer] =
java.lang.Integer.valueOf(_)
Contributors to this page:
Contents
- 导言
- Scala 3 特性
- 为什么是 Scala 3 ?
- Scala 的味道
- Hello, World!
- The REPL
- 变量和数据类型
- 控制结构
- 领域建模
- 方法
- 头等函数
- 单例对象
- 集合
- 上下文抽象
- 顶层定义
- 总结
- 类型初探
- 字符串插值
- 控制结构
- 领域建模
- 工具
- OOP 领域建模
- 函数式领域建模
- 方法
- 方法特性
- main 方法
- 总结
- 函数
- 匿名函数
- 函数变量
- Eta 扩展
- 高阶函数
- 自定义 map 函数
- 创建可以返回函数的方法
- 总结
- 打包和导入
- Scala 集合
- 集合类型
- 集合方法
- 总结
- 函数式编程
- 什么是函数式编程?
- 不可变值
- 纯函数
- 函数是值
- 函数式错误处理
- 总结
- 类型和类型系统
- 类型推断
- 泛型
- 相交类型
- 联合类型
- 代数数据类型
- 型变
- 不透明类型
- 结构化类型
- 依赖函数类型
- 其他类型
- 上下文抽象
- 扩展方法
- Given 实例和 Using 语句
- 上下文绑定
- Given 导入
- 实现类型类
- 多元相等性
- 隐式转换
- 总结
- 并发
- Scala 工具
- 使用 sbt 构建和测试 Scala 项目
- worksheet
- 与 Java 交互
- 向 Java 开发者介绍Scala
- Scala for JavaScript Developers
- Scala for Python Developers
- 下一步去哪