ruby - 如何使方法优先于局部变量

标签 ruby

我有一个方法和一个同名的局部变量x:

class A
  def x; 5 end
end

x = 10

我想在不使用self.x 的情况下引用方法x。例如,我想要:

A.new.instance_eval{x} # => 10

返回 5。这可能吗?

最佳答案

是的,有几种方式:

A.new.instance_eval{x()} # => 5
A.new.instance_eval{send(:x)} # => 5

如果只允许x,那是不可能的。局部变量具有词法范围,并且在有歧义的情况下优先于方法。

关于ruby - 如何使方法优先于局部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36822999/

相关文章:

java - 为什么 Ruby 比 Java 慢那么多?

ruby-on-rails - 如何在 Ruby on Rails 中以编程方式查找命名空间/模块名称?

ruby-on-rails - Rails 3 : Looping through array of objects, 忽略数组中的第一个对象?

php - 对于软件开发人员来说,什么是好的 Web 框架和/或工具?

ruby - 有没有更简洁的方法来组合 Ruby 中的许多比较?

ruby-on-rails - will_paginate 只显示上一页和下一页?

ruby - 如何根据 RSpec 中的测试类型执行测试

ruby - 在不安装 X 的情况下在 Ubuntu 服务器上安装 ruby​​ RMagick gem

ruby-on-rails - 你如何选择数组中的每第 n 个项目?

ruby - 在 Sinatra 中检测浏览器