加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 不了解类,模块和类<< self方法

发布时间:2020-12-16 19:19:10 所属栏目:百科 来源:网络整理
导读:我有以下代码: class MyClass module MyModule class self attr_accessor :first_name def myfunction MyModule.first_name = "Nathan" end end endend 当我像这样调用方法myfunction时,它工作正常: me = MyClass::MyModule.myfunction= "Nathan" me= "Nat
我有以下代码:
class MyClass  
  module MyModule
    class << self

      attr_accessor :first_name

      def myfunction
        MyModule.first_name = "Nathan"
      end

    end
  end
end

当我像这样调用方法myfunction时,它工作正常:

> me = MyClass::MyModule.myfunction
=> "Nathan"
> me
=> "Nathan"

但是如果我删除了类<<自我并添加一个自我. myfunction的前缀,它不起作用. 例如:

class MyClass  
  module MyModule

    attr_accessor :first_name

    def self.myfunction
      MyModule.first_name = "Nathan"
    end

  end
end


> me = MyClass::MyModule.myfunction
NoMethodError: undefined method `first_name=' for MyClass::MyModule:Module

我正在努力理解班级<<自我方法.我认为这是一种增加自我的方式.它内部的所有方法的前缀,但如果这是真的,如果我删除它并为每个方法前缀为self,为什么它不起作用.手动? 在此先感谢您的帮助.

解决方法

这是因为你的attr_accessor:first_name也包含在类<<自. 要按照你建议的方式做,你可以像这样使用mattr_accessor:
require 'active_support'

class MyClass  
  module MyModule

    mattr_accessor :first_name

    def self.myfunction
      MyModule.first_name = "Nathan"
    end

  end
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读