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

Ruby 为什么我必须声明var=Class.new?,ruby,Ruby,为什么我不能只设置var=Class?为什么它必须是var=Class.new?你可以在数组、散列、字符串中设置变量,只要var=[]、{}、或一些字符串“。班级是否做了一些特殊的事情,使其与众不同 class Word def palindrome(string) string == string.reverse end end w = Word.new puts w.palindrome("racecar") 实际上,你已经把特例倒过来了: []是数组

为什么我不能只设置
var=Class?
为什么它必须是
var=Class.new?
你可以在数组、散列、字符串中设置变量,只要
var=[]、{}、
一些字符串“
。班级是否做了一些特殊的事情,使其与众不同

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

w = Word.new

puts w.palindrome("racecar")

实际上,你已经把特例倒过来了:

  • []
    数组的缩写。新的
  • {}
    散列的缩写。new
  • 字符串的简写形式。新的
    (有点像,因为没有语法结构无法指定字符串(例如
    %
您可以执行
var=Klass
,但这会将
var
分配给
Klass
,而
Klass.new
调用对象
Klass
上的
new
方法(就像任何其他方法调用一样,没有任何特殊之处),该方法返回类
Klass
的新实例


注意:我已将您问题中的
Class
替换为
Klass
(通过
Class-Klass定义;end
)为了减少混淆,在谈论
Class
Class
实例时引入了许多元性,我认为您在这里并不关心这些元性,您只是想
Class
表示任何类。

我认为
w=Word
只是将
w
设置为对类的引用,而不是实例类的初始化/实例化?我的代码的问题是,如果我删除.new,则会出现一个错误,表示Word未定义。这对我来说没有意义,因为所有大写的变量都只能是类变量。@h00d13z:类变量以双精度符号开头(
@
),不带大写字母。以大写字母开头的变量是常量,而不是类变量。