Ruby “attr:str”在这段代码中有什么用途

Ruby “attr:str”在这段代码中有什么用途,ruby,Ruby,这里的代码显示了attr:str。它的用途是什么?这段代码是如何工作的 class SizeMatters include Comparable attr :str def <=>(anOther) str.size <=> anOther.str.size end def initialize(str) @str = str end def inspect @str

这里的代码显示了
attr:str
。它的用途是什么?这段代码是如何工作的

  class SizeMatters
    include Comparable
    attr :str

    def <=>(anOther)
      str.size <=> anOther.str.size
    end

    def initialize(str)
      @str = str
    end

    def inspect
      @str
    end

  end
class SizeMatters
包括可比
属性:str
def(另一个)
str.size另一个str.size
终止
def初始化(str)
@str=str
终止
def检查
@str
终止
终止

无法理解第3行中attr的用法。就连我都知道
attr\u accessor
attr\u accessor:str
在类上定义了两个方法:
str
str=
attr:str
仅定义一个:
str
attr
attr\u reader
是一样的。

attr\u访问器:str
在类上定义了两个方法:
str
str=
attr:str
仅定义一个:
str
attr
attr\u reader
是一回事。

这是Ruby中的访问器列表:

attr_reader :var
# has the effect of:
def var
  @var
end



attr
作为
attr\u阅读器
以代码中使用的形式工作:
attr:str

下面是在类的实例中使用的示例:

sm = SizeMatters.new('hello')
sm.str #=> "hello"
sm.str = 'hi' #=> undefined method `str=' for hello:SizeMatters
无法为
SizeMatters

如果用作
attr::str,则true
用作
attr\u访问器
,但不推荐使用。

参考请点击这里:

这是Ruby中的访问器列表:

attr_reader :var
# has the effect of:
def var
  @var
end



attr
作为
attr\u阅读器
以代码中使用的形式工作:
attr:str

下面是在类的实例中使用的示例:

sm = SizeMatters.new('hello')
sm.str #=> "hello"
sm.str = 'hi' #=> undefined method `str=' for hello:SizeMatters
无法为
SizeMatters

如果用作
attr::str,则true
用作
attr\u访问器
,但不推荐使用。

此处的参考检查:

'cat'。中间('ant',dog')
返回
true
'gnu'。中间('ant',dog')
返回'false'。为什么会这样?在上面的代码中,我定义了一个
可比较的
mixin,那么为什么需要定义方法
def(另一个)
@steenslag@amarjeetsingh这是完全不同的问题。字符串“cat”按字母顺序介于“ant”和“dog”之间,而string的方法是按字母顺序进行比较的。SizeMatters实例是通过字符串大小(通过它的方法)来比较的。
'cat'。between('ant','dog')
返回
true
,但
'gnu'。between('ant','dog')
返回'false'。为什么会这样?在上面的代码中,我定义了一个
可比较的
mixin,那么为什么需要定义方法
def(另一个)
@steenslag@amarjeetsingh这是完全不同的问题。字符串“cat”按字母顺序介于“ant”和“dog”之间,而string的方法是按字母顺序进行比较的。SizeMatters实例是通过字符串大小(通过它的方法)来比较的。如果您能够准确地描述
模块#attr
的文档中您不清楚的内容,这将非常有帮助,这样Ruby开发人员就可以改进文档了。这样,其他人就不会遇到同样的问题。如果您能够准确地描述
模块#attr
的文档中您不清楚的内容,这将非常有帮助,这样Ruby开发人员就可以改进文档了。这样,其他人就不会遇到同样的问题。