Scala 无参函数的定义和调用规则
正确代码示例
scala
object base57 {
// 定义无参函数时省略括号
def greet: Unit = {
println(s"hghhaa---")
}
def main(args: Array[String]): Unit = {
// 调用时也不加括号(正确方式)
greet
// 如果这样调用会报错:
// greet() // 编译错误:Unit does not take parameters
}
}
关键规则
1. 定义时省略括号 ⇒ 调用时也省略括号
scala
def greet: Unit = { ... } // 定义无括号
greet // 调用无括号 ✅
greet() // 编译错误 ❌
2. 定义时有空括号 ⇒ 调用时可省略括号
scala
def greet(): Unit = { ... } // 定义有空括号
greet() // 调用有括号 ✅
greet // 调用无括号 ✅(Scala允许)
三种函数定义方式对比
| 定义方式 | 调用方式 | 说明 |
|---|---|---|
def greet: Unit | greet | 严格无参,不能加() |
def greet(): Unit | greet() 或 greet | 空参数,两种调用都可 |
def greet(name: String) | greet("小明") | 有参数,必须提供参数 |
最佳实践
-
无副作用函数(纯函数):省略括号
scala
def pi: Double = 3.14159 // 数学常数 def currentTime: Long = System.currentTimeMillis() -
有副作用函数(IO操作):使用空括号
scala
def readLine(): String = scala.io.StdIn.readLine() def printMenu(): Unit = println("1. Start 2. Exit")