0

何かをループ/通過する関数があり、停止基準を設定する/何かを実行する関数への参照を受け取りたいです。たとえば、クラスでは次のようになります。

def a(func_stop,i)
   ret = nil # default
   while(i < 0 ) 
      if (func_stop(@lines[i]))
        ret = i
        break
      end
   end
   return ret
end

アイデアは、PERL のように、関数への参照を渡すことができるということです。

func1(\&func, $i);

私は見ましたが、そのようなものを見つけることができませんでした。ありがとう

4

2 に答える 2

4

通常、それはブロックで行われます。

def a(max, &func_stop)
  puts "Processing #{max} elements"
  max.times.each do |x|
    if func_stop.call(x)
      puts "Stopping"
      break
    else
      puts "Current element: #{x}"
    end
  end
end

それで

a(10) do |x|
  x > 5
end
# >> Processing 10 elements
# >> Current element: 0
# >> Current element: 1
# >> Current element: 2
# >> Current element: 3
# >> Current element: 4
# >> Current element: 5
# >> Stopping
于 2013-03-08T18:06:17.510 に答える
0

これを試すこともできます:

def a(func_stop,i)
   ret = nil # default
   while(i < 0 ) 
      if (func_stop.call(@lines[i]))
        ret = i
        break
      end
   end
   return ret
end

a(method(:your_function), i)
于 2013-03-08T18:14:36.357 に答える