Ruby 编程/方法调用
外观
< 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...