这并不是针对Rails的,我只是以Rails为例.

我有一个Rails模型:

class Item < ActiveRecord::Base

  def hello
    puts "Hello, #{self.name}"
  end
end

(假设Item模型(类)有一个名为name的方法.)我什么时候需要使用self.name,什么时候可以只使用name(例如#{name})?

推荐答案

  1. prefer在调用方法时省略self.是习惯用法;它通常是不需要的.

  2. 在调用setter方法时使用self.foo = xxx,而不是foo = xxx,这样Ruby就意识到您并没有试图创建一个新的局部变量.

    • Similarly, in the unlikely event that you have an existing local variable 100 with the same name as a method, you must use 101 to invoke the method, as just 100 will end up reading the variable.
  3. 使用self.foo(...)调用私有方法;你只能打foo(...).

Ruby相关问答推荐

CarrierWave Multi-uploader重命名现有文件

Ruby - 使用索引值识别和更新数组中的重复项

在一组字符串中找到最长的公共起始子字符串

Ruby 中的 STDIN 和 $stdin 有什么区别?

将 ruby​​ hash .default 设置为列表

如何正确截断表格?

Ruby:如何卸载设计(uninstall Devise)?

全新安装 RVM 和 Ruby 2.1.1 - dyld 库/路径错误

用mustache迭代数组

如何在不按 Enter 的情况下获取单个字符?

我可以在 Ruby 2.x 中要求命名参数吗?

查找两个数组之间的共同值

无法在 Windows 上安装 Aptana Studio 3.6

在 Ruby 中查找内存泄漏的原因

将两个数组组合成哈希

为什么在 ruby​​ 中动态创建大量符号不是一个好主意(对于 2.2 之前的版本)?

Ruby - 无法修改冻结的字符串 (TypeError)

如何在 Ruby 中对数组进行分块

使用 Liquid 标记在 Jekyll 中获取今天的日期

正则表达式中的 `?i` 和 `?-i` 是什么意思?