Html HAML.变量的每个函数
我有大约30多个变量,其中包含一个数组,数组中有多个字符串 1个变量=1个数组 我想知道是否有可能创建一个包含所有变量名称的新变量,这样我就可以循环使用它们 例如:Html HAML.变量的每个函数,html,arrays,ruby,list,haml,Html,Arrays,Ruby,List,Haml,我有大约30多个变量,其中包含一个数组,数组中有多个字符串 1个变量=1个数组 我想知道是否有可能创建一个包含所有变量名称的新变量,这样我就可以循环使用它们 例如: 以下是各个阵列: - @a = ["a","b","c","d","d"]; - @b = ["a","b","c","c","d"]; - @c = ["a","b","c","d"]; 现在我想在单独的变量中获取所有唯一和重复的字符串,如下所示: - @x_uniq = @a.uniq - @x_dup = @a.each_
- @a = ["a","b","c","d","d"];
- @b = ["a","b","c","c","d"];
- @c = ["a","b","c","d"];
- @x_uniq = @a.uniq
- @x_dup = @a.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }.select{ |k,v| v > 1 }.keys
...
- @x_uniq = @b.uniq
- @x_dup = @b.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }.select{ |k,v| v > 1 }.keys
...
- @x_uniq = @c.uniq
- @x_dup = @c.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }.select{ |k,v| v > 1 }.keys
- @x_uniq = @a.uniq
- @x_dup = @a.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }.select{ |k,v| v > 1 }.keys
%ul.list-inline
- @x_uniq.each do |x|
%li
%i{:class=>"fas fa-#{x} fa-2x"}
%span.f6 #{x}
- @x_dup.each do |x|
%li
%i{:class=>"fas fa-#{x} fa-2x"}
%span.f6 #{x}
谢谢。不要创建成堆不相关的变量。始终试着从操作结构的角度考虑Ruby代码:
- @data = { a: ["a","b","c","d","d"], b: ["a","b","c","c","d"], c: ["a","b","c","d"] }
然后定义一个方法,该方法接受该数组并返回断开的唯一和消除重复的数据:
def dedup_uniq(array)
{
uniq: array.uniq,
dup: array.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }.select { |k,v| v > 1 }.keys
}
end
这样处理起来很容易,只需迭代:
- @data = @data.map { |k, d| [ k, dedup_uniq(d) ] }.to_h
然后你就有了你想要的结构:
- @data.each do |k, d|
%ul.list-inline
- d[:uniq].each do |x|
%li
%i{:class=>"fas fa-#{x} fa-2x"}
%span.f6 #{x}
- d[:dup].each do |x|
%li
%i{:class=>"fas fa-#{x} fa-2x"}
%span.f6 #{x}
不要创建成堆不相关的变量。始终试着从操作结构的角度考虑Ruby代码:
- @data = { a: ["a","b","c","d","d"], b: ["a","b","c","c","d"], c: ["a","b","c","d"] }
然后定义一个方法,该方法接受该数组并返回断开的唯一和消除重复的数据:
def dedup_uniq(array)
{
uniq: array.uniq,
dup: array.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }.select { |k,v| v > 1 }.keys
}
end
这样处理起来很容易,只需迭代:
- @data = @data.map { |k, d| [ k, dedup_uniq(d) ] }.to_h
然后你就有了你想要的结构:
- @data.each do |k, d|
%ul.list-inline
- d[:uniq].each do |x|
%li
%i{:class=>"fas fa-#{x} fa-2x"}
%span.f6 #{x}
- d[:dup].each do |x|
%li
%i{:class=>"fas fa-#{x} fa-2x"}
%span.f6 #{x}
不确定所有的
都是什么代码>字符在这个Ruby代码中的作用。你可以也应该省略这些。我把代码>,因为我在.haml文档中使用它们,我希望代码尽可能接近我正在做的事情。我想我会从我的代码中去掉它们,因为我看到没有它们它也能工作。谢谢。这很奇怪,因为Ruby只在连接多行时需要它们,比如a+=1;b+=2,依此类推。在所有其他情况下都会忽略它们。好的,谢谢你提供的信息。我将从我的代码中删除它们。主要问题是什么?你知道我如何解决它吗?不知道所有的代码>字符在这个Ruby代码中的作用。你可以也应该省略这些。我把代码>,因为我在.haml文档中使用它们,我希望代码尽可能接近我正在做的事情。我想我会从我的代码中去掉它们,因为我看到没有它们它也能工作。谢谢。这很奇怪,因为Ruby只在连接多行时需要它们,比如a+=1;b+=2,依此类推。在所有其他情况下都会忽略它们。好的,谢谢你提供的信息。我将从我的代码中删除它们。主要问题是什么?你对我如何解决这个问题有什么想法吗?你如何在Haml中定义一个方法?如果这是在Rails的上下文中,你就定义一个助手方法。否则,您需要在HAML呈现代码可以访问的上下文中定义它。-@data中的k
是什么。每个do | k,d |
代表什么?@txyzk
是@data
散列中的键,请参见。如何在HAML中定义方法?如果这是在Rails上下文中,则定义助手方法。否则,您需要在HAML呈现代码可以访问的上下文中定义它。-@data中的k
是什么。每个do | k,d |
代表什么?@txyzk
是@data
散列中的键,请参阅。