Project1
标题:
关于变量的问题
[打印本页]
作者:
clap_pl
时间:
2011-1-9 20:14
标题:
关于变量的问题
这个问题在帖子名字上不太好表达
比如说 我有一系列变量分别叫 a1 , a2, a3, a4
还有一个变量 i
当i 为1时 return a1
为2时 return a2
为3时return a3
为4时return a4
(注:不用数组,不用
case i
when 1
return a1
when 2
return a2
when 3
return a3
end
这样的语句)
也就是说 能不能在变量名里 嵌套一个变量来控制
类似字符串里嵌套一个变量一样 如 #{XXX}
作者:
fux2
时间:
2011-1-9 20:22
回复
clap_pl
的帖子
a = []
def get_num(i)
return a
end
作者:
enghao_lim
时间:
2011-1-9 21:47
return eval("a#{i}")
作者:
clap_pl
时间:
2011-1-10 11:03
本帖最后由 clap_pl 于 2011-1-10 12:05 编辑
用了楼上的方法 结果出错了
a0=0
a1=1
a2=2
a3=3
def pip(i=0)
return eval("a#{i}")
end
p pip(1)
我是这么写了一个 在RUBY IDE下试了一下
结果报错
报错信息如下
test.rb:7:in `pip': undefined local variable or method `a1' for main:Object (NameError)
#对不起,搞错了
我定义的变量a0到a1是局部变量 作用域不对
试着改成
def pip(i=0)
a0=0
a1=1
a2=2
a3=3
return eval("a#{i}")
end
就对了 谢谢楼上两位
顺便查了下 eval的用法,这是个很有用的东西啊!
#======================
有时候要一组字符串能能够动态地执行,ruby中的eval方法就提供了这样的功能
语法:
--------------------------------------------------------------------------------
eval( 可执行字符串)
使用举例:
--------------------------------------------------------------------------------
Code
a = 1
b="true"
c="false"
str ="
if a==1 then
puts '输出:#{b}'
else
puts '输出:#{c}'
end
"
eval(str)
输出结果为:"true"
#=========================================
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1