符号的文字构造函数是什么?

时间:2017-09-30 14:51:10

标签: ruby

我正在学习Rails中的命名构造函数,为了练习,我们必须尝试找到符号的类层次结构。首先,我必须使用命名构造函数创建符号。我试过了两个

    s = Symbol.new(:newsymbol)

    s = Symbol.new(:"newsymbol")

但两者都告诉我“new”是Symbol类的未定义方法。是否有符号类的东西不允许“新”方法应用于它,或者我是否使用不正确的文字构造函数的符号?

2 个答案:

答案 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。也许这就是你的想法?