Project1

标题: 来问 Proc类的具体用法的 [打印本页]

作者: kvkv97    时间: 2015-8-11 22:29
标题: 来问 Proc类的具体用法的

  1.   def command_101
  2.   >>>>
  3.     # 设置信息结束后待机和返回调用标志
  4.       @message_waiting = true
  5. ★    $game_temp.message_proc = Proc.new { @message_waiting = false }
  6.     # message_text 设置为 1 行
  7.       $game_temp.message_text = @list[@index].parameters[0] + "\n"
  8.       line_count = 1
  9.   >>>>
  10.   end
复制代码
问题:F1中对Proc的说明“Proc 是对块及其环境(局部变量的作用域以及栈框架)进行对象化处理之后得到的过程对象”让人摸不着头脑,这个类作用是什么?后面怎么带一个{}号?{}号里面的@message_waiting = false表示什么?Proc的方法call作用是什么?
作者: 喵呜喵5    时间: 2015-8-11 23:43
本帖最后由 喵呜喵5 于 2015-8-11 23:49 编辑
  1. class A
  2.   def creat_proc
  3.     var = "Class A"
  4.     return Proc.new{ p var }
  5.   end
  6. end
  7. class B
  8.   def self.test
  9.     a = A.new
  10.     proc = a.creat_proc
  11.     var = "Class B"
  12.     proc.call
  13.   end  
  14. end

  15. B.test
复制代码
看这段实例代码,虽然B中同样定义了一个局部变量 var ,但是执行 p var 后输出的值确是 Class A 的 var,这是因为虽然 Proc 在 Class B 中执行,但是执行的环境却绑定在 Class A 中,所以原本无法穿过作用域门def 与 end的局部变量 var 被成功带到了其他地方
作者: kvkv97    时间: 2015-8-12 22:42
问题还没 完全弄清啊 ,有谁可以帮助解释下我的 几个 问题 !!!




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