2010-09-17 27 views
6

Tôi đến từ C++ và JAVA, với Phạm vi có toàn cầu hoặc cục bộ.Phạm vi biến thiên của Ruby Instance Câu hỏi

Tôi hiện đang học ruby-on-rails và với ruby ​​có địa phương, ví dụ và toàn cầu. Tôi chưa bao giờ thực sự nghe nói về ví dụ cho đến bây giờ.

Có hoặc không có đường ray, sự hiểu biết và cách sử dụng biến thể hiện là gì?

Global = Variable across all objects share 
Instance = Variable inside of the object 
Local = Variable inside of the object 

Tôi nghĩ rằng tôi nhận được cá thể dụ và địa phương trộn lẫn với nhau.

@ham 
ham 

Đây là hai biến khác nhau đúng không? Đôi khi tôi bị nhầm lẫn trong Rails bởi vì họ sử dụng công cụ hoán đổi cho nhau như @something và: something. Tại sao vậy?

Vì tôi sử dụng khung làm đường ray, tất cả tôi hiểu biến thể hiện là một thứ có thể truy cập được bằng chế độ xem.

Ai đó có thể làm rõ các biến này không?

Trả lời

6

Instance biến trong Ruby cũng giống như một trong Java, một phần của nhà nước đối tượng:

class MyObject 
    def set_x(x) 
    @x = x 
    end 

    def get_x 
    @x 
    end 
end 

mã Java tương đương:

class MyObject { 
    private Object x; 

    void setX(Object x) { 
     this.x = x; 
    } 

    Object getX() { 
     return x; 
    } 
} 

Và địa phương biến chỉ là một biến thể truy cập chỉ trong vòng đặc biệt này phương pháp:

def doIt 
    x = 3; 
    # x not accessible from outside of doIt 
    puts x 
end 

void doIt() { 
    int x = 3; 
    // same in Java 
    System.out.println(x); 
} 

chỉnh sửa
Bạn có ý nghĩa gì bởi trạng thái đối tượng?

MyObject o = new MyObject(); 
o.setX(3); 
// integer 3 is now stored in variable 'x' of object 'o' 
// I can return any time later and get that value back by 'o.getX()' 
+0

Bạn có ý nghĩa gì bởi trạng thái đối tượng? – RoR