func(@param) do |f|
some code here
end
和
@param.each do |sth|
some code here
end
什麼是絕對值符號在這裏做?我不明白這兩段代碼。
func(@param) do |f|
some code here
end
和
@param.each do |sth|
some code here
end
什麼是絕對值符號在這裏做?我不明白這兩段代碼。
這是塊中的局部變量,讓線路:
@param.each do |sth|
你遍歷@param
權,以及在@param
每個項目被稱爲單獨爲sth
。
所以如果@param
是指含有一個陣列的數字
[1,3,5,4]
在第一次迭代sth
將1
,然後3
,然後5
,然後4
。
也是一樣的:
func(@param) do |f|
除了現在局部變量稱爲f
!你可以稱它爲任何你想要的,甚至|ihavenoideawhatimdoing|
它表示實例變量。你經常看到它,如果人們使用attr_互換*方法,如attr_accessor,這使得@someattr和self.some_attr相當於實例方法。
它不表示實例變量,並且與'attr *':'@ isAnInstanceVariable'無關。 – 2013-02-28 01:13:54
它是一個塊的參數。該塊是do和end之間的代碼的一部分。該代碼塊可以使用f
或sth
,在您的示例中該代碼塊可能已由func
或each
設置。
A tutorial on Ruby blocks可能會有所幫助。
Labmda calculus - 更抽象,但它是我第一次看到這些東西的上下文。
我不會引入lambda微積分..但是,這個答案確實說明了它是什麼(或者說,它引入了什麼)..還有更好的可用塊的教程。 – 2013-02-28 01:17:37
是的,lambda微積分超過了頂端,而不是一個很好的比較,因爲與lambda表達式不同,塊可以有多個參數。更好的條款將是匿名函數或一流的函數。 – windywindy 2013-02-28 01:26:18
這只是引入塊參數的語法(類似於括號在適當位置引入方法參數的方式)。搜索「紅寶石塊教程」。 – 2013-02-28 01:11:54
我不明白這個問題是如何過於本地化的,當它與其他所有的「Ruby中的......意味着什麼」問題一樣的時候。 – DGM 2013-03-02 04:35:59