web-dev-qa-db-ja.com

Rustのオブジェクトとクラス

私はRustをいじって、例を見て、クラスを作ろうとしています。私は StatusLineTextの例 を見てきました

それはエラーを上げ続けます:

error: `self` is not available in a static method. Maybe a `self` argument is missing? [E0424]
            self.id + self.extra
            ^~~~

error: no method named `get_total` found for type `main::Thing` in the current scope
    println!("the thing's total is {}", my_thing.get_total());
                                                 ^~~~~~~~~

私のコードはかなり単純です:

fn main() {
    struct Thing {
        id: i8,
        extra: i8,
    }

    impl Thing {
        pub fn new() -> Thing {
            Thing { id: 3, extra: 2 }
        }
        pub fn get_total() -> i8 {
            self.id + self.extra
        }
    }

    let my_thing = Thing::new();
    println!("the thing's total is {}", my_thing.get_total());
}
22
RedMage

methods :を作成するには、明示的なselfパラメーターを追加する必要があります。

fn get_total(&self) -> i8 {
    self.id + self.extra
}

明示的なselfパラメーターのない関数は 関連関数 と見なされ、特定のインスタンスなしで呼び出すことができます。

25
Lee