2013-06-25 33 views
17

Tôi đang loay hoay xung quanh với Rust, đi theo các ví dụ, cố gắng tạo một lớp học. Tôi đã được nhìn vào example of StatusLineTextCác đối tượng và lớp học trong Rust

Nó giữ nâng lỗi:

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()); 
               ^~~~~~~~~ 

Mã của tôi là khá đơn giản:

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()); 
} 

Trả lời

21

Bạn cần phải thêm một tham số rõ ràng self để làm methods:

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

Các chức năng không có ví dụ plicit self tham số được coi là associated functions, có thể được gọi mà không có một trường hợp cụ thể.

+1

Để làm rõ, hiện tại, bản thân phải được khai báo rõ ràng trong các tham số của phương thức, tính bằng Rust 0.6 –

Các vấn đề liên quan