在Rust中有任何方法可以创建一个可以多次调用的本地函数.我在Python中这样做的方式是:
def method1():
def inner_method1():
print("Hello")
inner_method1()
inner_method1()
Run Code Online (Sandbox Code Playgroud)
Fra*_*gné 41
是的,您可以在函数内定义函数:
fn method1() {
fn inner_method1() {
println!("Hello");
}
inner_method1();
inner_method1();
}
Run Code Online (Sandbox Code Playgroud)
但是,内部函数无权访问外部作用域.它们只是从函数外部无法访问的普通函数.但是,您可以将变量作为参数传递给函数.要定义具有仍可从外部作用域访问变量的特定签名的函数,必须使用闭包.
小智 5
这是一个老问题,但我是从 Jon Gjengset 的优秀Rust for Rustaceans中得出的,其中指出了内部函数 Rust 的一个有趣的用例。也就是说,如果您有一个通用函数,但具有非通用子组件,则可以编写一个内部函数来减少单态化产生的机器代码重复量。他给出了 的示例HashMap::insert,它当然必须计算某些泛型类型的哈希值K,但在某些实现下,遍历映射以查找插入点可能是非泛型的。
快乐编码!
| 归档时间: |
|
| 查看次数: |
6814 次 |
| 最近记录: |