为什么在结构外部创建方法?

在像C#这样的语言中,您可以在struct内部添加方法。我知道在像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的struct外部声明方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43009835/

10-12 00:21
查看更多