以下代码使用:
send("#{duck1}=", true)我尝试了下面的代码,并想知道为什么它不起作用:
duck1.send(=,true)终端显示:syntax error, unexpected '=', expecting ')'
发布于 2014-02-25 05:03:38
send的第一个参数必须是表示方法名称的符号或字符串。=不是符号或字符串。它甚至不是一个物体。此外,即使您执行send(:"=", ...)或send("=", ...),它也不会工作,除非您已经将=定义为一种非常规的方法。(编辑: Bob Gilmore和J rg W Mittag的评论)
发布于 2014-02-25 05:14:09
在我们进入send方法的有效参数类型之前,先看看错误消息。它告诉您,在开始括号后立即使用“裸”等号是语法错误。所以,从一开始,你就知道有些事情很不对劲。
现在,如果您仔细查看确实有效的调用,您将看到您传递的是字符串"something=",而不是“裸”等号。根据send使用的参数类型,这是有可能工作的。
如果您阅读send的文档,您将看到第一个参数可以是字符串,也可以是符号。"#{duck1}="将被内插为字符串,因此这是有效的。
现在,问题变成了“什么是duck1,"#{duck1}="会被插入到现有函数的名称中吗?我不能回答这个问题,这完全取决于duck1的值。
https://stackoverflow.com/questions/22005015
复制相似问题