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

Why does respond_to? need symbols as arguments in Ruby?

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

x = 10
x.respond_to?(next)

像上面那样推送字符串会抛出 (ruby):1: void value expression.

它确实接受字符串:

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

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

来自 Ruby respond_to? 文档:

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

它接受符号和字符串。如果传递的是字符串,则会将其转换为符号。

如 Marek 所述,您没有传递字符串,也没有传递符号,并且内置关键字存在语法错误。