gpt4 book ai didi

ruby - 如何使用 Setter 使 Ruby 类表现得像散列

转载 作者:数据小太阳 更新时间:2023-10-29 07:44:10 26 4
gpt4 key购买 nike

出于学术原因,我想让 Ruby 类的一个实例表现得像一个散列。

目标

  1. 用哈希值初始化 MyClass 实例 # success
  2. 从 myClass 的实例请求值,如哈希 # success
  3. 然后将属性设置为散列 # 失败

尽管存在一些讨论,但我尝试了那里的内容(12)但没有成功。让我知道我做错了什么。谢谢!

class MyClass
attr_accessor :my_hash

def initialize(hash={})
@my_hash = hash
end

def [](key)
my_hash[key]
end

def set_prop(key, value)
myhash[key] = value
end

end

test = myClass.new({:a => 3}) #=> #<MyClass:0x007f96ca943898 @my_hash={:a=>3}>
test[:a] #=> 3
test[:b] = 4 #=> NameError: undefined local variable or method `myhash' for #<MyClass:0x007f96ca9d0ef0 @my_hash={:a=>3}>

最佳答案

您声明了 set_prop,但您在测试中使用了 []=。你是想得到这个吗?

class MyClass
attr_accessor :my_hash

def initialize(hash={})
@my_hash = hash
end

def [](key)
my_hash[key]
end

def []=(key, value)
my_hash[key] = value
end

end

test = MyClass.new({:a => 3}) # success
test[:a] # success
test[:b] = 4 # success

test.my_hash # => {:a=>3, :b=>4}

关于ruby - 如何使用 Setter 使 Ruby 类表现得像散列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18938835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com