我无法理解之间的差异map
和each
,以及何时何地使用它们.
我读过" 地图做什么? "和" Ruby Iterators "但是想要一些澄清.
如果我有:
z = [1,2,3].map {|x| x + 1}
Run Code Online (Sandbox Code Playgroud)
map
获取数组中的每个元素z
并为每个元素添加一个元素,但是除非我添加,否则它不会改变原始数组!
.
另一方面:
y = [1,2,3].each {|x| x + 1}
Run Code Online (Sandbox Code Playgroud)
回报[1,2,3]
.这对我来说很困惑,因为:
names = ['danil', 'edmund']
names.each { |name| puts name + ' is a programmer' }
Run Code Online (Sandbox Code Playgroud)
收益:
Danil is a programmer
Edmund is a programmer
Run Code Online (Sandbox Code Playgroud)
在我的第二个例子中,不允许每个数组元素增加的内容是什么1
,而在最后一个例子中,字符串被附加到数组中的所有内容?
所有的学分都交给了Speransky Danil,我把这些例子都拿走了.
我一直在读我的教科书,我们上了课,关键词self
出现了。我一直在阅读有关tutorialpoint的一些教程,并且阅读了许多SO问题,但是由于某些原因,它只是没有点击我的“ ruby self”,所以我决定自己修改一些示例
考虑
class Box
# Initialize our class variables
@@count = 0
def initialize(w,h)
# assign instance avriables
@width, @height = w, h
@@count += 1
end
def self.printCount()
puts "Box count is : #@@count"
end
end
# create two object
box1 = Box.new(10, 20)
box2 = Box.new(30, 100)
# call class method to print box count
Box.printCount()
Run Code Online (Sandbox Code Playgroud)
如果self.
从printCount()
方法中删除,为什么会出现错误?我知道self
区分类变量和实例变量非常重要,就像我的示例@width,@height
和@@count
。
因此,我的想法是,由于我要修改类变量@@count
,因此我要使用.self
关键字,因为我要修改类变量。因此,每当要更改类变量时,都必须使用form …