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

Project1

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

[已经解决] [Cache类问题]关于clone

[复制链接]

Lv1.梦旅人

梦石
0
星屑
49
在线时间
157 小时
注册时间
2013-8-14
帖子
203
跳转到指定楼层
1
发表于 2013-8-23 01:16:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 九靈 于 2013-8-23 01:20 编辑

RUBY 代码复制
  1. module RPG
  2.   module Cache
  3.     [url=home.php?mod=space&uid=341345]@Cache[/url] = {}
  4.     def self.load_bitmap(folder_name, filename, hue = 0)
  5.       path = folder_name + filename
  6.       if not @cache.include?(path) or @cache[path].disposed?
  7.         if filename != ""
  8.           @cache[path] = Bitmap.new(path)
  9.         else
  10.           @cache[path] = Bitmap.new(32, 32)
  11.         end
  12.       end
  13.       if hue == 0
  14.         @cache[path]
  15.       else
  16.         key = [path, hue]
  17.         if not @cache.include?(key) or @cache[key].disposed?
  18.           @cache[key] = @cache[path].clone
  19.           @cache[key].hue_change(hue)
  20.         end
  21.         @cache[key]
  22.       end
  23.     end

第18行的
@cache[key] = @cache[path].clone
clone 是必要吗?
何不直接
@cache[key] = @cache[path] 呢?
换句话说
一般而言 clone 的目的是什么?

点评

泥煤我纯水也要说一句,你丫的刷帖0.0  发表于 2013-8-23 09:51

Lv1.梦旅人

梦石
0
星屑
50
在线时间
466 小时
注册时间
2013-2-8
帖子
424
2
发表于 2013-8-23 07:57:16 手机端发表。 | 只看该作者
复制一个副本而不是直接引用
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
3
发表于 2013-8-23 08:11:31 | 只看该作者
如果不clone 那么当这个Bitmap被两个Sprite引用,那么将会出现一些无法预料的错误
举例:
  1. a = Sprite.new
  2. b = Sprite.new
  3. c = Bitmap.new("...")
  4. a.bitmap = c
  5. b.bitmap = c
  6. a.bitmap.clear #此时由于是同一个Bitmap导致b的显示也被清空
  7. b.bitmap.dispose #此时这个Bitmap被释放
  8. a.bitmap.clear #由于对释放的Bitmap进行操作而导致出错
复制代码
总之除了Fixnum Symbol以外 传递的过程中是赋值而不是复制 而clone和dup就是用来解决这个问题的

点评

原来如此...感谢!  发表于 2013-8-23 13:11

评分

参与人数 1星屑 +100 收起 理由
︶ㄣ牛排ぶ + 100 认可答案

查看全部评分

我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
49
在线时间
157 小时
注册时间
2013-8-14
帖子
203
4
 楼主| 发表于 2013-8-23 13:08:14 | 只看该作者
刷帖非本意啊
再说经验啥的我不再乎
我是真的有问题啊
再说6R上也没人问
那我只能发帖了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-6 15:26

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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