我的背景是PHP和C#,但我真的很想學習RoR。爲此,我已經開始閱讀官方文檔。我對一些代碼示例有一些疑問。一些簡單的Ruby問題 - 迭代器,塊和符號
首先是與迭代器:
class Array
def inject(n)
each { |value| n = yield(n, value) }
n
end
def sum
inject(0) { |n, value| n + value }
end
def product
inject(1) { |n, value| n * value }
end
end
我明白yield
意思是「這裏執行相關的塊。」最引人注目的是each
的|value| n =
部分。其他塊讓我更有意義,因爲他們似乎模仿C#風格lambda表達式:
public int sum(int n, int value)
{
return Inject((n, value) => n + value);
}
但第一個例子是混亂給我。
另一個是符號。我什麼時候想要使用它們?爲什麼我不能做這樣的事情:
class Example
attr_reader @member
# more code
end