MoonBit 语言导览 MoonBit

函数

函数是可重用的代码块,接受输入(参数)并产生输出(返回值)。函数使用 fn 关键字定义,后跟函数名、括号中的参数列表、 -> 后的返回类型,以及大括号中的函数体。

参数

参数是函数期望接收的输入。在调用函数时,你需要为这些参数提供具体的值。参数必须有明确的类型注解。

返回值

函数可以使用 return 关键字返回值,或者让函数体中的最后一个表达式作为返回值。返回类型必须在 -> 箭头后指定。当函数不返回有意义的值时,可以使用 Unit 类型,这类似于其他语言中的 void

带标签的参数和可选参数

MoonBit 支持带标签的参数,语法是 label~ : Typeprint_position声明了xy两个带标签的参数,调用时,需要以label=value的形式提供它们的值。

参数也可以是可选的,同时提供一个默认值。语法为label? : Type = default_value。以print_greeting函数为例,当调用print_greeting并且不提供name参数时,name将使用默认值"guest"。传递可选参数时必须在调用处提供标签名。

带标签和可选参数可以按任意顺序传递,使函数调用更加可读。

///|
fn add(a : Int, b : Int) -> Int {
  return a + b
}

///|
fn multiply(x : Int, y : Int) -> Int {
  x * y
}

///|
fn print_position(x~ : Int, y~ : Int) -> Unit {
  println("(\{x},\{y})")
}

///|
fn print_greeting(name? : String = "guest") -> Unit {
  println("Hello, " + name + "!")
}

///|
fn main {
  println(add(1, 2))
  println(multiply(2, 2))
  print_position(x=10, y=20)
  print_position(y=20, x=10)
  print_greeting()
  print_greeting(name="alice")
}