使用道具 举报
℃ake 梦石0 星屑50 在线时间8 小时 注册时间2009-6-6 回帖670 发消息
楼主你按过F12了吧,按了后进入存档画面就卡死 把下面这一行放在脚本编辑器的最最最顶部 不管你以后再增加了什么脚本都要保证这一行在最最最顶部$__jump__.call if $__jump__然后把下面这一行放在Main脚本内的最顶 ... 后知后觉 发表于 2009-12-3 18:49
Continuation 调用内部函数 callcc{ |cont| ... }时,它会将此前的状态(局部变量的定义、栈框架)保存到cont中然后执行块。cont是Continuation类的实例,使用Continuation#call 方法就可以随时调出保存的状态然后继续运行。 熟悉C语言的setjmp()/longjmp()的人可以把它想成 setjmp() == callcc {|c| } longjmp() == c.call 这样或许就好理解了(但有一点不同,当栈朝向纵深发展时,callcc也可以跳转到那里)。 callcc()返回块的返回值,但Continuation#call(args)返回args。 例: 下例是由Continuation构成的无限循环 def LOOP c = nil yield callcc {|c| true} c.call(false) end LOOP {|v| p v} => true false false false : : callcc是call-with-current-continuation的缩写形式。 超类:Object 方法:self[ret[,ret2[,...]]] ((<ruby 1.8 特性>)) call(ret[,ret2[,...]]) 在self所保存的状态的基础上继续运行。参数将原封不动地变为callcc的返回值。 -------------------------------------------------------------------------------- 原文由 webmaster[at]ruby-lang.org 所著 稀亿网络软件(北京)进行翻译 我们在寻找热爱Ruby的技术人员和日语人才! 最后更新:2006-10-23
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
这里的今天,有我过往努力的见证~
Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.