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

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 不了解类,模块和类<< self方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下代码
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
原文链接:https://www.f2er.com/ruby/270649.html

猜你在找的Ruby相关文章