Ruby on rails 如何使用数组的元素和从每个元素派生的其他变量迭代数组

Ruby on rails 如何使用数组的元素和从每个元素派生的其他变量迭代数组,ruby-on-rails,arrays,ruby,each,Ruby On Rails,Arrays,Ruby,Each,我正试图找到一种简单或更好的方法来实现范围和范围的资本化。我怎么做 我需要范围和范围都大写 实例化变量不是一个选项 迄今为止的代码 ['users', 'companies'].each do |scope| scope_capitalized = scope.capitalized # do stuff with scope and scope_capitalized end # if I had ['users', 'companies'] in a variable 'a' I

我正试图找到一种简单或更好的方法来实现范围和范围的资本化。我怎么做

我需要范围和范围都大写 实例化变量不是一个选项 迄今为止的代码

['users', 'companies'].each do |scope|
  scope_capitalized = scope.capitalized
  # do stuff with scope and scope_capitalized
end

# if I had ['users', 'companies'] in a variable 'a' I could do
a.zip(a.map(&:capitalized)).each do |scope, scope_capitalized|

根据您对数据的操作方式,您可以这样做,首先创建一个包含对的数组:

terms = ['users', 'companies']
terms_with_capitals = terms.map{ |scope| [scope, scope.capitalized] }
terms_with_capitals # => [['users', 'Users'],['companies','Companies']]
['users','companys'].map&:capitalize将返回一个大写项目数组作为一行。然而,如果你试图用大写的字符串做一些事情,一行可能不是一个好主意,因为你可能会得到一个很长的,不可理解的东西链。空白不需要花费任何费用,而且可读性总是很好的。坦白地说,我会这样做:

%w(users companies).map(&:capitalize).each do |scope|
  # do scope stuff
end

你的问题包含了你真正需要的所有信息。你说:

# if I had ['users', 'companies'] in a variable 'a' I could do
a.zip(a.map(&:capitalized)).each do |scope, scope_capitalized|
因此,只需将数组替换为


这绕过了实例化

您能澄清一下“将范围和范围资本化”是什么意思吗?到目前为止,您的代码似乎是正确的。你还想对这些变量做什么?实例化变量不是一个选项,所以你希望有人帮你做作业?如果教授要求一行,作业会有多傻?只是因为有些东西看起来很傻,并不意味着它不会被指定为作业:如果这不是作业,什么限制了您实例化变量的能力?也许你在代码的其他地方还有另一个问题。我无法实例化变量,所以只需将它链接在一起[‘用户’、‘公司’)。映射{scope |[scope,scope.capitalized]}。每个{scope,scope | capitalized | |····························,或者你所拥有的一切都很好:写得不好……我的意思是这是一个解决方案,但应该是一个更好的方式,你不这么认为吗?很好!但我认为这样没有改进的余地
['users', 'companies'].zip(['users', 'companies'].map(&:capitalized)).each do |scope, scope_capitalized|
%w(users companies).map{|s|[s, s.capitalized]}.each do |scope, scope_capitalized|
  ...
end