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

时间:2015-06-01 06:42:04

标签: ruby arguments symbols

为什么这个方法只接受符号而不接受字符串作为参数?

x = 10
x.respond_to?(next)

按上述字符串会抛出(ruby):1: void value expression

2 个答案:

答案 0 :(得分:3)

它接受字符串:

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

您的问题是您没有传递字符串,而是next关键字。

答案 1 :(得分:1)

来自Ruby respond_to? doc:

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

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

正如Marek所说,你没有传递字符串,也没有符号,并且内置关键字有语法错误。