Sco*_* L. 8 struct scope function rust
我试图了解impl块内定义的函数的范围究竟是什么,但不接受&self作为参数.例如,为什么下面的代码块不能编译?我收到错误"无法generate_a_result在此范围内找到功能".
pub struct Blob {
num: u32,
}
impl Blob {
pub fn new() -> Blob {
generate_a_result()
}
fn generate_a_result() -> Blob {
let result = Blob {
num: 0
};
result
}
}
Run Code Online (Sandbox Code Playgroud)
Luk*_*odt 12
这些函数称为关联函数.它们位于该类型的命名空间中.他们总是被称为像Type::function().在你的情况下,那是Blob::generate_a_result().但是,为了引用您自己的类型,有特殊关键字Self.所以最好的解决方案是:
Self::generate_a_result()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1323 次 |
| 最近记录: |