Scala 方法
Scala 类、案例类、特征、枚举和对象都可以包含方法。简单方法的语法如下所示
def methodName(param1: Type1, param2: Type2): ReturnType =
// the method body
// goes here
以下是一些示例
def sum(a: Int, b: Int): Int = a + b
def concatenate(s1: String, s2: String): String = s1 + s2
您不必声明方法的返回类型,因此,如果您愿意,可以像这样编写这些方法
def sum(a: Int, b: Int) = a + b
def concatenate(s1: String, s2: String) = s1 + s2
这是调用这些方法的方法
val x = sum(1, 2)
val y = concatenate("foo", "bar")
以下是一个多行方法的示例
def getStackTraceAsString(t: Throwable): String = {
val sw = new StringWriter
t.printStackTrace(new PrintWriter(sw))
sw.toString
}
def getStackTraceAsString(t: Throwable): String =
val sw = new StringWriter
t.printStackTrace(new PrintWriter(sw))
sw.toString
方法参数也可以具有默认值。在此示例中,timeout
参数的默认值为 5000
def makeConnection(url: String, timeout: Int = 5000): Unit =
println(s"url=$url, timeout=$timeout")
由于在方法声明中提供了默认 timeout
值,因此可以以这两种方式调用该方法
makeConnection("https://localhost") // url=http://localhost, timeout=5000
makeConnection("https://localhost", 2500) // url=http://localhost, timeout=2500
Scala 还支持在调用方法时使用命名参数,因此,如果您愿意,也可以像这样调用该方法
makeConnection(
url = "https://localhost",
timeout = 2500
)
当多个方法参数具有相同类型时,命名参数特别有用。乍一看,使用此方法,您可能想知道哪些参数设置为 true
或 false
engage(true, true, true, false)
extension
关键字声明您即将在括号中放置的参数上定义一个或多个扩展方法。如本示例所示,类型为 String
的参数 s
随后可在您的扩展方法的正文中使用。
下一个示例展示了如何向 String
类添加 makeInt
方法。此处,makeInt
采用名为 radix
的参数。代码并未考虑可能的字符串到整数的转换错误,但跳过该细节,示例展示了其工作方式
extension (s: String)
def makeInt(radix: Int): Int = Integer.parseInt(s, radix)
"1".makeInt(2) // Int = 1
"10".makeInt(2) // Int = 2
"100".makeInt(2) // Int = 4
另请参阅
Scala 方法可以更强大:它们可以采用类型参数和上下文参数。它们在 领域建模 部分中进行了详细介绍。
此页面的贡献者
内容
- 简介
- Scala 特性
- 为何选择 Scala 3?
- Scala 尝鲜
- 你好,世界!
- REPL
- 变量和数据类型
- 控制结构
- 领域建模
- 方法
- 一类函数
- 单例对象
- 集合
- 上下文抽象
- 顶级定义
- 总结
- 类型初探
- 字符串内插
- 控制结构
- 领域建模
- 工具
- OOP 建模
- FP 建模
- 方法
- 方法特性
- Scala 3 中的主方法
- 总结
- 函数
- 匿名函数
- 函数变量
- Eta 展开
- 高阶函数
- 编写您自己的 map 方法
- 创建返回函数的方法
- 总结
- 打包和导入
- Scala 集合
- 集合类型
- 集合方法
- 总结
- 函数式编程
- 什么是函数式编程?
- 不可变值
- 纯函数
- 函数即值
- 函数式错误处理
- 总结
- 类型和类型系统
- 推断类型
- 泛型
- 交集类型
- 联合类型
- 代数数据类型
- 方差
- 不透明类型
- 结构类型
- 依赖函数类型
- 其他类型
- 上下文抽象
- 扩展方法
- 上下文参数
- 上下文边界
- 给定的导入
- 类型类
- 多重相等
- 隐式转换
- 总结
- 并发
- Scala 工具
- 使用 sbt 构建和测试 Scala 项目
- 工作表
- 与 Java 交互
- 面向 Java 开发人员的 Scala
- 面向 JavaScript 开发人员的 Scala
- 面向 Python 开发人员的 Scala
- 下一步