首页 > 解决方案 > 如何通过包含变量名称的字符串引用变量?

问题描述

我想通过搜索关键字对项目进行分类。对于每个项目类型,我都有一组关键词。我将变量名作为项目类型,变量的内容作为关键字进行匹配。

project_detail = "Build a school"
a   = %w[education school]
b       = ["Health Care", "Clean Water"]
projects    = %w[a b]
project_type = String.new
projects.each do |e|
   # How to refer to the variable a and b? (I used one of the answers)
   eval(e).each do |keyword|        
       project_type = e if project_detail.match(/#{keyword}/)
   end  
end

标签: ruby

解决方案


您可以使用以下任何一种:

1. 评估

a = 1
b = 2
c = 3
vars = %w[a b c]
vars.each { |v| puts eval(v) }

输出:

1
2
3
 => ["a", "b", "c"]

2.绑定#local_variable_get

vars.each { |v| puts binding.local_variable_get(v) }

推荐阅读