Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html HAML.变量的每个函数_Html_Arrays_Ruby_List_Haml - Fatal编程技术网

Html HAML.变量的每个函数

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_

我有大约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_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和x_dup变量的方式:

    - @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} 
    
  • 如果我有30个带数组的变量,我需要分别为每个变量执行.each()循环。我想知道,是否有人知道一种方法来迭代包含不同数据的30个x_uniq和x_dup变量

  • 我想创建一个包含所有3个变量的变量。类似这样(顺便说一句,我不知道变量@d是否正确):

    接下来我要做的是迭代@d变量,以获得各个变量及其内容。问题是我不知道如何迭代@d变量

    有人能解决我的问题吗?还是一种处理这件事的新方法


    谢谢。

    不要创建成堆不相关的变量。始终试着从操作结构的角度考虑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 |
    代表什么?@txyz
    k
    @data
    散列中的键,请参见。如何在HAML中定义方法?如果这是在Rails上下文中,则定义助手方法。否则,您需要在HAML呈现代码可以访问的上下文中定义它。
    -@data中的
    k
    是什么。每个do | k,d |
    代表什么?@txyz
    k
    @data
    散列中的键,请参阅。