根据我对self的理解,它指的是类的当前实例.

这不是一直以来的默认行为吗?例如,不是吗

self.var_one = method(args)

相当于

var_one = method(args) 

如果是,self有什么用?

推荐答案

在大多数情况下,self.foo确实是多余的,因为你只需要写foo就可以达到同样的效果,但在这种情况下不是,self是必需的.

var_one = method(args)将创建一个名为var_one的局部变量,它不会调用任何方法或对self执行任何其他操作.

self.var_one = method(args)将使用参数method(args)self上调用方法var_one=.

使用self是非可选的另一种情况是,如果您想将其作为参数传递给一个方法,即some_method(self),那么如果没有self关键字,您就不能这样做.

Ruby相关问答推荐

Ruby Case语句和固定,不适用于attr_reader

如何在 Ruby 中为链表实现#pop

如何使用 gsub 删除返回字符串中的/和/i?

如何使用 define_method 指定方法默认参数?

Simple_form:删除带有标签的内联复选框的外部标签

ruby:对两个或多个数组的对应成员求和

为什么 Ruby 使用 respond_to?而不是 responds_to?

object_id 分配如何工作?

读取文件时如何避免 UTF-8 BOM

如何使用 Ruby OptionParser 指定所需的switch (不是参数)?

从命令行调用 ruby​​ 函数

如何在 Ruby 脚本中运行 Rake 任务?

在 Ruby 中打开默认浏览器

将 CSV 文件转换为哈希数组

Ruby 方法to_sym有什么作用?

如何在 Ruby 中获取堆栈跟踪对象?

为什么compass watch说它无法加载 sass/script/node (LoadError)?

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

在 Ruby 中创建二维数组和访问子数组

Ruby:从 Ruby 中的变量创建哈希键和值