设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1846|回复: 2
打印 上一主题 下一主题

[已经解决] 来问 Proc类的具体用法的

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4169
在线时间
258 小时
注册时间
2013-10-13
帖子
815
跳转到指定楼层
1
发表于 2015-8-11 22:29:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x

  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作用是什么?

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21711
在线时间
9422 小时
注册时间
2012-6-19
帖子
7119

开拓者短篇九导演组冠军

2
发表于 2015-8-11 23:43:30 | 只看该作者
本帖最后由 喵呜喵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 被成功带到了其他地方

点评

似乎懂了点啊 !  发表于 2015-8-12 00:08

评分

参与人数 1梦石 +1 收起 理由
RyanBern + 1 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4169
在线时间
258 小时
注册时间
2013-10-13
帖子
815
3
 楼主| 发表于 2015-8-12 22:42:52 | 只看该作者
问题还没 完全弄清啊 ,有谁可以帮助解释下我的 几个 问题 !!!

点评

Proc.new { @message_waiting = false } 具体是什么意思啊??  发表于 2015-8-12 23:10
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-12-4 03:09

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表