【发布时间】:2022-01-27 21:28:47
【问题描述】:
实际上我是 ruby 中 oops 概念的新手,在这里我想将实例变量从一个函数调用到同一类中的另一个函数。但是我得到了第二个函数“one_object”的未定义方法
module User
class Object
class << self
def add_object(items)
@data={}
@data.merge!(items)
end
# i want to use above @data = {} for next one_object method after adding items to the add_object method
def one_object
@data.merge!({"ext"=>"1.0"})
end
end
end
end
a = User::Object.add_object({"txt"=>"text_file","csv"=>"csv_file"})
p a.one_object
预期输出:
{"txt"=>"text_file", "csv"=>"csv_file", "ext"=>"1.0"}
【问题讨论】:
-
如果您是 OOP 新手,您可能应该从定义一个带有一些实例方法的临时类开始,而不是直接跳入
class << self兔子洞 ;-) -
是的,谢谢你的建议,你能分享一些这方面的知识吗,我的意思是你能提供解决方案吗。
-
@Bharath 为什么首先在上面的 sn-p 中添加
class << self?它正在做一些“魔法”,在您熟悉一些基础知识之前最好不要碰它(这根本不是魔法,但它确实需要对 Ruby 对象模型有更深入的了解)。创建一个简单的类来完成必要的工作,然后在必要时进一步移动...... -
@KonstantinStrukov 现在我更新了我的代码。所以我尝试使用带有类的模块,你能提供解决方案吗?事情就在这里,我得到了“add_object”方法的答案,但我还需要使用下一个方法的最终输出
-
Object是一个现有的类,也许你可以为你的类想出另一个名字。
标签: ruby