簡體   English   中英

為什么我必須在Rust中的struct之外聲明方法?

[英]Why do I have to declare methods outside a struct in Rust?

為什么在結構外部創建方法?

在像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開發人員做出的決定是讓結構更加清晰,結構只不過是一組數據。

這也是允許現有類型的特征實現的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM