【问题标题】:Ruby issue with class_evalclass_eval 的 Ruby 问题
【发布时间】:2013-01-20 07:34:03
【问题描述】:

我正在尝试运行以下命令,但我不断收到一个

“NoMethodError: #/Foo:0x86f69ba/ 的未定义方法 `bar='”

    class Class
    def my_attr_accessor(name)

    attr_name = name.to_s  
    attr_reader name       
    attr_reader "my_"+name 
    class_eval %Q"def #{name}=(val)
                 @#{name}=val
                 end"
      end

    end

我实际上正在使用类似于此帖子的内容:Ruby - Using class_eval to define methods

已编辑:您说得对,我做出了更改以反映这一点。非常感谢。

【问题讨论】:

    标签: ruby setter class-eval


    【解决方案1】:

    class_eval 是一个方法,但是你在这里分配了一个变量(class_eval =

    【讨论】:

    • 你也应该使用define_method而不是class_eval
    • 能否详细说明原因?我很想知道它背后的原因。
    • @user1994202 评估字符串而不是块是 1) 计算量大,2) 长期不安全——很容易将不受信任的数据插入到字符串 eval 中,从而允许外部攻击者执行任意代码你的过程。
    猜你喜欢
    • 1970-01-01
    • 2011-05-23
    • 2017-04-22
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多