为什么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
关键字。
答
红宝石respond_to? DOC:
respond_to?(symbol, include_all=false) → true or false
respond_to?(string, include_all=false) → true or false
它同时接受,符号和字符串。如果传递的字符串被转换为符号。
正如Marek所提到的,您没有传递字符串,也没有传递符号,并且在内置关键字中出现语法错误。
那它可以互换吗? – therewillbecoffee
''next''字符串和':next'符号?是的,在这方面。 –
另一个问题,单引号是否可以用双引号互换?在Java中,它们只用于char。 – therewillbecoffee