未定义的方法“+@”

2024-01-06

我不明白为什么这不起作用;所有三个元素都应该是字符串。

i = 5
base = "somestring"
base = i.to_s +" #{base} " + i.to_s # => Undefined method '+@'

为什么将其解释为方法?我想这可能与设置有关base等于其自身的一部分,但这似乎有效:

base = "#{base}"

好问题!在红宝石中,+@方法定义一元 + 运算符的行为。换句话说,它定义了当你有这样的表达式时会发生什么+someSymbol.

所以,在这种情况下,它会看到你的表情部分,+" #{base} "并尝试将一元 + 方法应用于不存在的字符串。

尝试在之间添加空格+和字符串的开头。


同样有趣的是,这种情况只发生在某些情况下。

i = 2
i.to_s +"foo" # => NoMethodError: undefined method `+@` for "foo":String
"2" +"foo"    # => "2foo"

发生什么了?i.to_s +"foo"相当于i.to_s(+"foo")。现在您可以明白为什么调用一元 + 函数而不是字符串连接运算符。


因此,您还有其他选项来修复代码:

i.to_s() +" #{base} " + i.to_s

or even

"#{i} #{base} #{i}"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

未定义的方法“+@” 的相关文章

随机推荐

  • racket程序与python程序之间的通信

    我想要球拍程序和Python程序之间的通信 我的球拍代码 lang racket define values sp o i e subprocess f f f hello exe display server i flush output
  • 正确[超级dealloc]

    dealloc 方法中语句的顺序重要吗 是否 super dealloc 需要在方法的顶部吗 有关系吗 也在例如viewDidLoad 应该 super viewDidLoad 位于方法的顶部 It 绝对地很重要 您的操作取决于您使用的是自
  • 根据用户的区域设置和偏好设置日期和时间的格式(以秒为单位)

    我试图根据用户的设置获取格式化的日期 年 月 日 和时间 小时 分钟 秒 字符串 This https groups google com forum topic android developers I35vKNWqLdQAndroid
  • 使用 ruby​​ PaperTrail 具体化版本时出错

    我按照中的说明进行操作https github com paper trail gem paper trail https github com paper trail gem paper trail 在项目 Gemfile 中添加 pap
  • 使用 google_places 进行多个位置搜索(来自 googleway)

    假设我有一个包含多个位置的向量 经度和纬度格式 我想使用 google places 找到最近的地铁站 但是 我总是收到这样的错误 validateGeocodeLocation 位置 中的错误 位置必须是一对纬度和经度坐标的向量 代码如下
  • Boost::asio - 如何中断阻塞的 TCP 服务器线程?

    我正在开发一个多线程应用程序 其中一个线程充当从客户端接收命令的 TCP 服务器 该线程使用 Boost 套接字和接受器来等待客户端连接 接收来自客户端的命令 将命令传递给应用程序的其余部分 然后再次等待 这是代码 void ServerT
  • 动态增加文本框高度? [复制]

    这个问题在这里已经有答案了 可能的重复 自动调整文本区域大小 https stackoverflow com questions 7477 autosizing textarea 大家好 我正在尝试解决一个问题 但毫无进展 我想做的是当用户
  • Restler API框架安装

    我想开始使用 Restler 开发 Rest api 但是 我找不到有关如何安装它的任何详细信息 此外 它似乎在 nginx 服务器上运行 有没有办法在apache上运行这个框架 是否有其他替代方案来构建高质量的 APIS 有关于安装这个框
  • 使用 Ninject 获取对象的实例

    我安装在我的项目上Ninject MVC3 http nuget org List Packages Ninject MVC3通过努吉特 I read 本文 http azolotar blog com 2011 02 17 ninject
  • 如何使用 valgrind 启动 Android 应用程序

    上周我一直在寻找这个问题的答案 如何使用 valgrind 启动 Android 应用程序 我知道我可以使用 am 命令启动应用程序 但它会启动应用程序并退出 我正在编写一个使用 NDK 执行本机 C 代码的应用程序 我需要检查它是否存在可
  • 如何使用Odin解压、修改、打包和烧写`system.img.ext4`文件?

    我有一个system img ext4 lz4与我的三星 S10 5G 高通 设备兼容的文件 我已经提取了system img ext4文件来自system img ext4 lz4 using unlz4 system img ext4
  • javascript 承诺的正确术语是什么

    我对周围的不同术语感到困惑 根据我的理解 承诺可以是 实现了 rejected pending settled resolved defer 解决了就是解决了吗 还是说已经实现了呢 延迟到底是什么 术语可能很难 让我们从承诺 A 规范 ht
  • 如何对字典中相同键的值求和?

    假设我的字典 mydict red 6 blue 5 red 12 这是我到目前为止所做的 for key value in mydict if key mydict keys key value value else print key
  • Py3k 通过返回迭代器而不是列表来节省内存

    许多过去在 Python 2 x 中返回列表的方法现在似乎在 Py3k 中返回迭代器 迭代器也是生成器表达式吗 懒评价 因此 Python 的内存占用将大大减少 不是吗 使用内置脚本从 2 转换为 3 的程序又如何呢 为了兼容性 内置工具是
  • 属性或获取/设置方法对对象大小的影响

    就对象大小而言 如果公开的属性不表示状态而只是将其 getter 和 setter 调用委托给另一个实体 则属性 而不是 Get Set 方法 如何影响对象大小 例如 考虑以下类 public class Person Address ad
  • 如何在没有 ON 子句的情况下连接 2 个表

    我想要得到SUM column a 从两个不同的表中获取它们的差异 我正在使用MySQL Table A s sum 1234 Table B s sum 4001 我不知道该放什么在我的ON clause SELECT SUM a col
  • Microsoft Bot 与 Whatsapp 集成 [已关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在尝试整合微软机器人框架 https dev botframework com 使用 WhatsApp 我已经拥有与机器人服务对话
  • 如何从亚马逊获取产品的图片和标题?

    我正在尝试根据亚马逊的独特产品代码制作一个产品列表 例如 https www amazon in gp product B00F2GPN36 https www amazon in gp product B00F2GPN36 其中 B00F
  • UIView 子类有自己的 XIB [重复]

    这个问题在这里已经有答案了 我创建了一个自定义 UIView 子类 并且不希望在 UIView 子类中的代码中布局 UI 我想使用 xib 来实现这一点 所以我所做的如下 我创建了一个 ShareView 类 它是 UIView 的子类 我
  • 未定义的方法“+@”

    我不明白为什么这不起作用 所有三个元素都应该是字符串 i 5 base somestring base i to s base i to s gt Undefined method 为什么将其解释为方法 我想这可能与设置有关base等于其自