Ruby 程式設計/方法呼叫
外觀
super 關鍵字可用於呼叫在進行呼叫的類的超類中具有相同名稱的方法。傳遞給 super 呼叫的值將傳遞到父方法。
示例
class SomeClass def initialize(name) end end
class ChildClass < SomeClass
def initialize(name, value)
super(name)
end
end
呼叫上面子類的 initialize 函式將導致執行其主體和父類中 initialize 函式的主體。
請注意,如果您在沒有引數的情況下呼叫 super,則執行方法的所有引數也將傳遞給父方法 - 並且如果父方法的簽名與引數數量不匹配,則會引發異常。因此,如果子方法使用的引數數量與超類中的版本不同,則需要列出要傳遞給父方法版本的方法。
還要注意,您可以使用任何方法名稱,而不僅僅是 initialize(在本例中)。
迭代器提供了一種方法來迴圈遍歷一組值並對每個值執行操作,通常由程式碼塊指定。迭代器功能通常透過 mixin Enumeration 模組提供。
Ruby 程式設計師可能會遇到的第一個迭代器是 each 迭代器。
示例
arr = [1,2,3] arr.each do |number| put number end
輸出
1 2 3
yield 執行傳遞給方法的整個程式碼塊。
示例
def do3times
yield
yield
yield
end
do3times { puts "yielding..." }
輸出
yielding... yielding... yielding...
因此,您可以建立自己的方法,使其看起來像內建的 times
class Fixnum
def times_plus1
i = 1
while i <= self + 1
i += 1
yield
end
end
end
5.times_plus1 { puts "yielding..." }
輸出
yielding... yielding... yielding... yielding... yielding... yielding...