Ruby如何使用符号来引用变量名?
发布时间:2020-12-17 03:38:53 所属栏目:百科 来源:网络整理
导读:当我们在以下代码中为name定义getter和setter方法时: class Animal attr_accessor :name def initialize(name) @name = name endend 内部发生了什么? Ruby如何获取符号并将其与变量匹配? 解决方法 它使用 instance_variable_get 和 instance_variable_set
当我们在以下代码中为name定义getter和setter方法时:
class Animal attr_accessor :name def initialize(name) @name = name end end 内部发生了什么? Ruby如何获取符号并将其与变量匹配? 解决方法
它使用
instance_variable_get 和
instance_variable_set .
更新:正如安德鲁马歇尔所指出的那样,并非如此大多数ruby核心方法都是用C定义的,但结果基本相同. 可以如下定义attr_accessor和朋友: def self.attr_accessor(*names) names.each do |name| define_method(name) do instance_variable_get("@#{name}") end define_method("#{name}=") do |new_value| instance_variable_set("@#{name}",new_value) end end end 请注意,我在这里也使用了 我建议您查看一些关于ruby元编程的介绍性文本,例如“Don’t Know Metaprogramming In Ruby?”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |