首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby方法#send

Ruby方法#send
EN

Stack Overflow用户
提问于 2014-02-25 05:00:39
回答 2查看 88关注 0票数 1

以下代码使用:

代码语言:javascript
复制
send("#{duck1}=", true)

我尝试了下面的代码,并想知道为什么它不起作用:

代码语言:javascript
复制
duck1.send(=,true)

终端显示:syntax error, unexpected '=', expecting ')'

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-25 05:03:38

send的第一个参数必须是表示方法名称的符号或字符串。=不是符号或字符串。它甚至不是一个物体。此外,即使您执行send(:"=", ...)send("=", ...),它也不会工作,除非您已经将=定义为一种非常规的方法。(编辑: Bob Gilmore和J rg W Mittag的评论)

票数 0
EN

Stack Overflow用户

发布于 2014-02-25 05:14:09

在我们进入send方法的有效参数类型之前,先看看错误消息。它告诉您,在开始括号后立即使用“裸”等号是语法错误。所以,从一开始,你就知道有些事情很不对劲。

现在,如果您仔细查看确实有效的调用,您将看到您传递的是字符串"something=",而不是“裸”等号。根据send使用的参数类型,这是有可能工作的。

如果您阅读send的文档,您将看到第一个参数可以是字符串,也可以是符号。"#{duck1}="将被内插为字符串,因此这是有效的。

现在,问题变成了“什么是duck1"#{duck1}="会被插入到现有函数的名称中吗?我不能回答这个问题,这完全取决于duck1的值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22005015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档