自我不等于实例变量吗?

时间:2017-02-04 19:27:23

标签: ruby oop

在这里学习Ruby,这是我第一次进入OOP,下面是我的完整代码,它创建了一个哈希类。我无法理解<ProgressBar xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="8dip" android:indeterminate="true" android:indeterminateDrawable="@drawable/custom_progress" /> 方法中幕后发生的事情。当我将union更改为self.to_a.each { |key| joined_set.insert(key) }时,哈希@store.to_a.each { |key| joined_set.insert(key) }将成为包含joined_set的键和值的数组数组,而如果我只使用{{1}则它只包含键而不是@store。这种差异是如何产生的? self不等于实例变量吗?

self

2 个答案:

答案 0 :(得分:1)

您获得不同结果的特定原因越多,self.to_a等于@store.keys。为什么?因为那是你如何定义to_a

def to_a
  @store.keys
end

@store.keys@store.to_a彼此非常不同; @store是一个ruby HashHash#to_a返回一个数组数组,每个子数组都是一个键值对,如[[key1, value1], [key2, value2]];另一方面,Hash#keys只返回一组键。

答案 1 :(得分:0)

self不等于实例变量 self等于当前对象,在本例中,它是MyHashSet类的当前实例。
因此@store在这种情况下是self的属性。

如果attr_accessor@store,那么@store将等于self.store