查看: 1736|回复: 1

[已经过期] 这种情况怎么中断循环?

[复制链接]
梦石
0
星屑
65
在线时间
389 小时
注册时间
2009-11-24
回帖
59
发表于 2014-11-14 14:56:37 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
[pre lang='ruby' line='1']
module M
        def self.m()
                loop do
                        Graphics.update();
                        Input.update();
                        if Input.trigger?(:C)
                                #我想在这里调用C类的c方法,但不知道怎么做……
                                break;
                        end
                end
        end
end
class C
        def initialize()
                @b = false;
                loop do
                        M.m();
                        break if @b;
                end
        end
        def c()
                @b = true;
        end
end
C.new();
[/pre]
以上是此问题简化后的脚本,这种情况怎么中断循环?

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2014-11-14 15:58:23 | 显示全部楼层
本帖最后由 taroxd 于 2014-11-14 16:02 编辑

使用 Kernel#catch,Kernel#throw

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

或者,利用 block 来控制

或者,使用 fiber

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



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

评分

参与人数 1梦石 +1 收起 理由
VIPArcher + 1 我很赞同

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部