scala无参函数

56 阅读1分钟

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: Unitgreet严格无参,不能加()
def greet(): Unitgreet() 或 greet空参数,两种调用都可
def greet(name: String)greet("小明")有参数,必须提供参数

最佳实践

  1. 无副作用函数(纯函数):省略括号

    scala

    def pi: Double = 3.14159  // 数学常数
    def currentTime: Long = System.currentTimeMillis()
    
  2. 有副作用函数(IO操作):使用空括号

    scala

    def readLine(): String = scala.io.StdIn.readLine()
    def printMenu(): Unit = println("1. Start 2. Exit")