为什么我不能只设置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")
答案 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
代表任何类。