跳转到内容

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...
上一节:控制结构 索引 下一节:类
华夏公益教科书