我正在学习Rails中的命名构造函数,为了练习,我们必须尝试找到符号的类层次结构。首先,我必须使用命名构造函数创建符号。我试过了两个
s = Symbol.new(:newsymbol)
和
s = Symbol.new(:"newsymbol")
但两者都告诉我“new”是Symbol类的未定义方法。是否有符号类的东西不允许“新”方法应用于它,或者我是否使用不正确的文字构造函数的符号?
答案 0 :(得分:2)
Ruby中的Symbol类没有Symbol#new方法。这与符号的独特性有关。要使用文字,您只需使用前导分号。以下是一些例子:
s = :s
s = :cat
s = :"A symbol with spaces in it"
答案 1 :(得分:0)
在你的例子中
s = Symbol.new(:new_symbol)
不会运行的等同于以下运行
s = :new_symbol # :new_symbol is already a symbol!
现在有一种方法可以将字符串转换为符号:
s = "new_symbol".to_sym
将s
设置为值:new_symbol
。也许这就是你的想法?