2013-10-28 3 views
0

나는 루비의 문법 설탕 ExampleClass이 방법을 가질 때 우리가이루비의 인덱스 접근을 에뮬레이션, []

o = ExampleClass.new 
o.name = "An object" 

같은 변수에 값을 할당 할 수 있습니다 방법을 이해 :이 작업을 수행하는 방법

name=(new_name) 

Hash과 같은 수업의 경우 이 방법을 원하면 어떻게 할 수 있습니까?

h = MyHash.new 
h[:key] = value 

나는 Hash 클래스로부터 상속받지 않습니다.

답변

3

당신은 단지 방법을

def [](key_to_retrieve) 
    #return corresponding value here 
end 

을 가질 수
def []=(key_to_set, value_to_set) 
    #set key/value here 
end 
+0

감사합니다. Ruby is awesome –

+0

@ x-treme 답변자에게 보상을주고 나중에 다른 사람이이 대답이 가장 잘 해결되었다는 것을 알리도록하려면이 대답을 "수락"하십시오. – Phrogz

+0

머리 위로 @ Phrogz 감사합니다. –

1

JacobM 꽤 많은 질문에 대답; 그러나 나는 약간을 다시 읽는 것을 추가하고 싶다 변경 가능한 클래스.

이 흥미로운 것을 발견 할 수 있습니다.

MyHash = Struct.new(:x, :y) 
#This creates a new class MyHash with two instance variables x & y 
my_obj = MyHash.new(3, 4) 
#=> #<struct MyHash x=3, y=4> 
my_obj[:x] = 10 
#=> #<struct MyHash x=10, y=4> 
my_obj.y = 11 
#=> #<struct MyHash x=10, y=11> 

이 자동으로이, 당신은 항상 클래스를 열 수 있습니다 쓰기[]=

에 의해 변경할 수 일부를 추가 할 읽을 수있는 인스턴스 변수를 만드는 : 당신은 신속로 Struct를 사용하여 변경 가능한 클래스를 정의 할 수 있습니다 새로운 것들.

class MyHash 
    def my_method 
    #do stuff 
    end 
    def to_s 
    "MyHash(#{x}, #{y})" 
    end 
end