为什么我必须声明var = Class.new?

时间:2013-02-15 04:11:28

标签: ruby

为什么我不能只设置var = Class?为什么必须var = Class.new?您可以在数组,哈希,仅包含var = [], {},"some_string"的字符串中设置变量。 Class正在做一些特定的事情,使它与众不同吗?

class Word
    def palindrome(string)
        string == string.reverse
    end
end

w = Word.new

puts w.palindrome("racecar")

1 个答案:

答案 0 :(得分:2)

实际上,你有一个特殊情况:

  • []Array.new
  • 的简写
  • {}Hash.new
  • 的简写
  • ""String.new的简写(因为没有办法指定没有句法结构的字符串(例如"'或{{1}) }})。

可以执行%,但是会将var = Klass分配给var,而Klass会调用Klass.new方法object new(就像任何其他方法调用一样,没什么特别的),它返回类Klass的新实例

注意:我已将Klass中的Class替换为Klass(通过class Klass; end定义)以减少混淆,因为正在谈论Class和{{ 1}}实例引入了许多我认为你不关心的元数据,并且你只是想Class代表任何类。