为什么respond_to?在Ruby中需要符号作为参数?

问题描述:

为什么此方法只接受符号而不接受字符串作为参数?为什么respond_to?在Ruby中需要符号作为参数?

x = 10 
x.respond_to?(next) 

推一个像上面这样的字符串会抛出(ruby):1: void value expression

它接受的字符串:

x = 10 
x.respond_to?('next') 
# => true 

你的问题是,你没有通过字符串,但next关键字。

+0

那它可以互换吗? – therewillbecoffee

+0

''next''字符串和':next'符号?是的,在这方面。 –

+0

另一个问题,单引号是否可以用双引号互换?在Java中,它们只用于char。 – therewillbecoffee

红宝石respond_to? DOC:

respond_to?(symbol, include_all=false) → true or false 
respond_to?(string, include_all=false) → true or false 

它同时接受,符号和字符串。如果传递的字符串被转换为符号。

正如Marek所提到的,您没有传递字符串,也没有传递符号,并且在内置关键字中出现语法错误。