我了解 Ruby 的语法糖如何让我们为这样的变量赋值
o = ExampleClass.new
o.name = "An object"
当ExampleClass
有一个方法:
name=(new_name)
这对像这样的课程有什么作用Hash
?如果我想这样做,我将如何命名我的方法?
h = MyHash.new
h[:key] = value
我不是从Hash
班级继承的。
我了解 Ruby 的语法糖如何让我们为这样的变量赋值
o = ExampleClass.new
o.name = "An object"
当ExampleClass
有一个方法:
name=(new_name)
这对像这样的课程有什么作用Hash
?如果我想这样做,我将如何命名我的方法?
h = MyHash.new
h[:key] = value
我不是从Hash
班级继承的。
你可以只有方法
def [](key_to_retrieve)
#return corresponding value here
end
和
def []=(key_to_set, value_to_set)
#set key/value here
end
JacobM 几乎回答了这个问题。但我想补充一些我读过的关于Mutable classes的内容。
你可能会觉得这很有趣。您可以使用 as 快速定义一个可变类Struct
:
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>
这会自动使实例变量可读、可写和可变[]=
您可以随时打开课程添加一些新内容;
class MyHash
def my_method
#do stuff
end
def to_s
"MyHash(#{x}, #{y})"
end
end