为什么要在结构外创建方法?
在像 C# 这样的语言中,您可以在结构中添加方法。我知道在像 C 和 C++ 这样的语言中,你有头文件,所以这是有道理的,但据我所知,我无法在 Rust 中创建头文件。
最佳答案
在大多数语言中,“方法”只是一些语法糖。你实际上没有一个对象并调用它的方法,你有一个函数引用那个对象然后用它做一些事情。与常规函数相反,对象的引用是通过使用点表示法隐式传递的。
struct Foo {
//...
}
impl Foo {
fn do_something(self: &Self) { //"self: &Self" is a more verbose notation for "&self"
//...
}
}
所以这样称呼
my_foo.do_something();
本质上是一样的
Foo::do_something(&my_foo);
我认为这是 Rust 开发人员做出的一个决定,目的是更清楚地表明结构只是一组数据。
这也是允许对现有类型实现特征的原因。
关于methods - 为什么我必须在 Rust 的结构之外声明方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43009835/