Chinaunix
标题:
Ruby中有没有办法可以用变量动态代表数组名呢?
[打印本页]
作者:
alinunix
时间:
2013-10-11 18:00
标题:
Ruby中有没有办法可以用变量动态代表数组名呢?
本帖最后由 alinunix 于 2013-10-11 18:18 编辑
1 #!/usr/bin/env ruby
2 tool_features = ['f1', 'f2']
3
4 names = ["a", "tool", "b"]
5
6 names.each do |x|
7 tmp_new = "#{x}_features"
8
if tmp_new.empty?
9 puts "no"
10 else
11 puts "yes, tool_features arrary defined!\n"
12 puts tmp_new
13 end
14 end
输出:
yes, tool_features arrary defined!
a_features
yes, tool_features arrary defined!
tool_features
yes, tool_features arrary defined!
b_features
我的本意是用变量来代表数组名来判断一个数组是否存在,希望12行打印出数组tool_features的内容f1f2
但显然蓝色部分(第8行)最终判断的是字符串名是否存在,第12行实际上输出的只是字符串的内容,而不是同名的数组的内容
有没有办法可以用变量动态代表数组名呢?
*******************************************************
或者换个问法:
1 #!/usr/bin/env ruby
2 tool_features = ['f1', 'f2']
3 a = "tool_features"
4
5
puts "#{a}"
输出:
tool_features
我的本意是用变量来代表数组名,希望5行打印出数组tool_features的内容f1f2
但显然蓝色部分(第5行)最终输出的只是字符串a的内容,而不是a中存的字符串代表的同名数组的内容
有没有办法可以用变量动态代表数组名呢?
作者:
bikong0411
时间:
2013-10-12 09:26
或许你可以这样
#!/usr/bin/env ruby
tool_features = ['f1', 'f2']
names = ["a", "tool", "b"]
names.each do |x|
begin
tmp_new = eval("#{x}_features")
rescue
tmp_new = []
end
if tmp_new.empty?
puts "no"
else
puts "yes, tool_features arrary defined!\n"
puts tmp_new
end
end
作者:
alinunix
时间:
2013-10-13 22:06
bikong0411 发表于 2013-10-12 09:26
或许你可以这样
#!/usr/bin/env ruby
可以了,正是我想要的效果,学习了,谢谢bikong0411兄。
作者:
Sevk
时间:
2013-10-15 19:28
提示:
作者被禁止或删除 内容自动屏蔽
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2