如何迭代一个数组及其元素和从每个元素派生的一些其他变量
How to iterate over an array with its elements and some other variable derived from each element
我正在尝试找到一种获得 scope
和 scope_capitalized
的单线或更好的方法。我该怎么做?
- 我需要
scope
和 scope_capitalized
都分配
- 实例化变量不是一个选项
到目前为止的代码
['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','companies'].map(&:capitalize)
将 return 一组大写项目作为一行。但是,如果您尝试 "do stuff" 使用大写字符串,单行代码可能不是一个好主意,因为您最终可能会得到一串很长、难以理解的东西。白色 space 不花钱,可读性总是有利的。坦率地说,我会做这样的事情:
%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|
那么只需将数组放在 a
的位置
['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
这会绕过实例化
我正在尝试找到一种获得 scope
和 scope_capitalized
的单线或更好的方法。我该怎么做?
- 我需要
scope
和scope_capitalized
都分配 - 实例化变量不是一个选项
到目前为止的代码
['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','companies'].map(&:capitalize)
将 return 一组大写项目作为一行。但是,如果您尝试 "do stuff" 使用大写字符串,单行代码可能不是一个好主意,因为您最终可能会得到一串很长、难以理解的东西。白色 space 不花钱,可读性总是有利的。坦率地说,我会做这样的事情:
%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|
那么只需将数组放在 a
['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
这会绕过实例化