Project1

标题: 这种情况怎么中断循环? [打印本页]

作者: test    时间: 2014-11-14 14:56
标题: 这种情况怎么中断循环?
RUBY 代码复制
  1. module M
  2.         def self.m()
  3.                 loop do
  4.                         Graphics.update();
  5.                         Input.update();
  6.                         if Input.trigger?(:C)
  7.                                 #我想在这里调用C类的c方法,但不知道怎么做……
  8.                                 break;
  9.                         end
  10.                 end
  11.         end
  12. end
  13. class C
  14.         def initialize()
  15.                 @b = false;
  16.                 loop do
  17.                         M.m();
  18.                         break if @b;
  19.                 end
  20.         end
  21.         def c()
  22.                 @b = true;
  23.         end
  24. end
  25. C.new();

以上是此问题简化后的脚本,这种情况怎么中断循环?
作者: taroxd    时间: 2014-11-14 15:58
本帖最后由 taroxd 于 2014-11-14 16:02 编辑

使用 Kernel#catch,Kernel#throw

或者,把 c 的实例作为参数传入 M.m

或者,利用 block 来控制

或者,使用 fiber

或者,不要使用这种奇怪的写法



以上看不懂的名词请参考 Ruby 文档




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1