在这里学习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
答案 0 :(得分:1)
您获得不同结果的特定原因越多,self.to_a
等于@store.keys
。为什么?因为那是你如何定义to_a
:
def to_a
@store.keys
end
@store.keys
和@store.to_a
彼此非常不同; @store
是一个ruby Hash
,Hash#to_a
返回一个数组数组,每个子数组都是一个键值对,如[[key1, value1], [key2, value2]]
;另一方面,Hash#keys
只返回一组键。
答案 1 :(得分:0)
self
不等于实例变量
self
等于当前对象,在本例中,它是MyHashSet类的当前实例。
因此@store
在这种情况下是self
的属性。
如果attr_accessor
有@store
,那么@store
将等于self.store