设为首页 收藏本站
登录 /立即注册 /找回密码

URPGs

快捷导航
  • 门户Portal
  • 论坛BBS
  • 群组Group
  • 导读Guide
  • 家园Space
  • 工具Tools
  • 广播Follow
  • 期刊Periodical
  • 排行榜Ranklist
  • 社区茶坊
  • pixlr图片编辑
  • 资源列表
  • photobucket
  • RMVA Lite [In English]
  • RM RTP
  • TryRUBY
  • RMXP+RMVX下载[VeryCD]
  • RMVA下载[66RPG]
搜索
  • 本版
  • 帖子
  • 用户
URPGs»论坛 › 提问区 › RPG Maker VX Ace 提问区 › 关于常量名
返回列表 发新帖
查看: 5971|回复: 7

关于常量名

[复制链接]
失落的乐章
失落的乐章 当前离线
积分
18
查看详细资料 窥视卡 雷达卡
发表于 2012-8-31 18:48:22 | 显示全部楼层 |阅读模式
比如说现有以下100个常量(只是举个例子),
  1. A1 = 1
  2. A2 = 2
  3. A3 = 3
  4. ………………
  5. A100 = 100
复制代码
现在要依据这100个常量的名字执行互不相同的操作,比如A1就乘以1,A2就乘以2,如果一个一个写太麻烦了。不知能不能像用for循环那样,常量名里那个数字依次迭代为1..n,再执行操作?

                       【其实我是来试试看这里有没有人来回答问题】
回复

使用道具 举报

  • 提升卡
  • 置顶卡
  • 沉默卡
  • 喧嚣卡
  • 变色卡
  • 抢沙发
  • 千斤顶
  • 显身卡
satgo1546
satgo1546 当前离线
积分
201
查看详细资料 窥视卡 雷达卡
发表于 2012-9-17 19:24:38 | 显示全部楼层
爱eval(好吧我承认我没效率)
  1. 100.times do |i|
  2.   eval("A#{i} *= A#{i}")
  3. end
复制代码
回复 Like Dislike

使用道具 举报

  • 显身卡
失落的乐章
失落的乐章 当前离线
积分
18
查看详细资料 窥视卡 雷达卡
 楼主| 发表于 2012-10-7 13:29:35 | 显示全部楼层
satgo1546 发表于 2012-9-17 19:24
爱eval(好吧我承认我没效率)

以eval的效率这样会卡死的
回复 Like Dislike

使用道具 举报

  • 显身卡
翎·仲秋
翎·仲秋 当前离线
积分
219
查看详细资料 窥视卡 雷达卡
发表于 2012-10-7 17:33:33 | 显示全部楼层
记得Ruby有些地方和C一样
回复 Like Dislike

使用道具 举报

  • 显身卡
烁灵
烁灵 当前离线
积分
23
查看详细资料 窥视卡 雷达卡
发表于 2012-10-7 19:58:29 | 显示全部楼层
  1. const_get
复制代码
试试?
  1. A1 = 1
  2. A2 = 2
  3. A3 = 3
  4. for i in 1..3
  5.         p Object.const_get("A#{i}")
  6. end
复制代码
效率什么的不懂_(:3ゝ∠)_

评分

参与人数 1银币 +10 收起 理由
失落的乐章 + 10 塞糖~

查看全部评分

回复 Like Dislike

使用道具 举报

  • 显身卡
Ruby200
Ruby200 当前离线
积分
3
查看详细资料 窥视卡 雷达卡
发表于 2013-3-11 07:29:10 | 显示全部楼层
本帖最后由 Ruby200 于 2013-3-11 07:45 编辑

symbol也可以用字符串内插:
[code=ruby]
class A
  (1..100).each {|x|
    const_set :"A#{x}", x
  }
  p A43
end

p A::A42
[/code]


另外下面的eval也未必很慢:
[code=ruby]
class A
  #↓在这个具体语境可以用eval和instance_eval替换
  class_eval ["def self.work",
                     *(1..100).map{|x| "const_set :A#{x}, #{x}"},
                "end"].join("\n")

end


A.work
A.work
A.work
p A::A42
[/code]


  

评分

参与人数 1银币 +10 收起 理由
失落的乐章 + 10 赞一个!

查看全部评分

回复 Like Dislike

使用道具 举报

  • 显身卡
懒之圣帝
懒之圣帝 当前离线
积分
217
查看详细资料 窥视卡 雷达卡
发表于 2013-5-10 20:24:26 | 显示全部楼层
好了,思考了N个月,我只知道把这100个常量扔数组之后遍历一次就完了。话说Ruby有取得常量名的函数?
回复 Like Dislike

使用道具 举报

  • 显身卡
lbq
lbq 当前离线
积分
199
查看详细资料 窥视卡 雷达卡
发表于 2013-5-11 07:41:36 | 显示全部楼层
研究了一下发现其实主要用instance_variable_set,还有const_set以及class_variable_set就可以的=-=。当然各种class eval啊instance eval啊啥的都可以的说。。。。

其实我要吐槽为毛不用一个数组呢。。那样多简单=-=
回复 Like Dislike

使用道具 举报

  • 显身卡
返回列表 发新帖
高级模式
B Color Image Link Quote Code Smilies
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|意见反馈[feedback]| URPGs RPG Maker 游戏制作讨论

GMT+8, 2025-5-11 17:36 , Processed in 0.025722 second(s), 11 queries .

Powered by Discuz! X3.5

© 2011-2019 URPGs (Discuz! X3.4 © 2001-2019 Comsenz Inc.)

积分 0, 距离下一级还需 积分
快速回复 返回顶部 返回列表