函数可见性
我们在前面的课程中已经见过一些使用函数的示例。本节中我们将进一步讨论函数。
一个函数使用 fun
关键字声明,后跟函数名、类型参数、输入参数、返回类型和函数体。
fun my_function<A_Type>(input1: u64, input2: A_Type): (A_Type, bool) {
input2.x = input2.x + input1;
(input2, true)
}
函数可以具有不同的可见性:private
、public
、public(package)
。
1. private
如果我们没有明确指定,private
是函数的默认可见性。private 函数只能在声明它的模块内部访问。
module move_castle::module_a {
fun foo(): u64 { 0 }
}
module move_castle::module_b {
use move_castle::module_a;
fun call_foo() {
module_a::foo(); // error[E04001]: restricted visibility
}
}
2. public
public
函数可以被任何模块中的任何函数调用,如果我们将函数 foo
改为 public,则允许在 call_foo
中调用它。
module move_castle::module_a {
public fun foo(): u64 { 0 }
}
module move_castle::module_b {
use move_castle::module_a;
fun call_foo() {
module_a::foo(); // 可行
}
}
3. public(package)
public(package)
修改后的函数只允许在定义它们的同一个包内调用。