Ruby:为以后定义命名一个方法?

标签 ruby

我正在尝试编写一个具有两种方法(TrySlotLookAtCut)的小型 ruby​​ 脚本。每个方法都需要能够调用另一个方法。当 ruby​​ 解析第一个方法时,它失败了,因为它不理解第二个方法的名称,因为我还没有定义它。

那么,我该如何告诉 ruby​​,有一个名为 TrySlot 的方法,我稍后会定义它,这样我就可以在我的 LookAtCut< 定义中调用 TrySlot/?

最佳答案

您遇到问题的原因是 Ruby 通常假定所有以大写字母开头的名称都是常量。但是,它还可以让您定义名称以大写字母开头的方法。发生的事情如下:

  • Ruby 看到 def LookAtCut并正确定义了一个名为 LookAtCut 的方法
  • 内部LookAtCut , Ruby 看到 TrySlot ,假定它是一个常量,尝试找到它并因错误而失败,因为它尚未定义。

解决方案是不要使用以大写字符开头的方法名称。然后,您可以在另一个方法中使用尚未定义的方法:

def a
  b
end

def b
  puts "Hello!"
end

a #=> "Hello!"

关于Ruby:为以后定义命名一个方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9660985/

相关文章:

c - 如何从 C 级代码访问 Ruby AST?

ruby-on-rails - Ruby on Rails - 在电子邮件 NoMethodError 上恢复密码

ruby-on-rails - 将变量插入数据属性

ruby-on-rails - 使用 AASM 的 ActiveRecord 模型上的 delayed_job - 吞下失败的方法错误,而是抛出 "wrong number of arguments"

ruby - Sinatra 中临时文件的 send_file

ruby-on-rails - ActiveRecord 条件错误

ruby - 我怎样才能声明一个 mixin 方法,以便它可以从实例方法和类方法中使用?

ruby-on-rails - 为什么 Ruby File 类不包含 size 实例方法

ruby - 相当于其他语言ruby中方法名的感叹号

ruby-on-rails - Ajax 请求不适用于 Rails 中的 Controller 操作