【问题标题】:print array items 3 per line [duplicate]每行打印数组项3个[重复]
【发布时间】:2018-01-29 22:49:40
【问题描述】:

下面是我的整个动态数组输出,每行 10 个 - 我想设置一个参数,每行有 3 个数组项,在创建 3 个另一行之后。

...     
     while i < arr.length
          print "Define types of coffee drinks: "
          coffee = gets.chomp
          arr[i] = coffee
          i += 1
        end
        puts arr.join(", ")
      break
...

例如,在我的动态数组创建后,它的输出如下:

black iced coffee, cold brew, espresso, flat white, frap, latte, drip, fancy, smancy

一行 10 个,我希望它输出如下:

black iced coffee, cold brew, espresso,
flat white, frap, latte, 
drip, fancy, smancy

【问题讨论】:

  • 您的问题不清楚,因为您没有提供minimal reproducible examplearr 是什么?您的代码示例应该是完整的 - 即我应该能够自己复制和粘贴并运行它。
  • 输出中的第二行(有四个元素)是错字,对吧?你应该a.push(coffee) 而不是担心i

标签: arrays ruby


【解决方案1】:
array.each_slice(3).with_index do |part, ind|
  puts part.join(", ") + (ind == 3 ? "" : ",")
end

可能是你想要做的。

【讨论】:

    【解决方案2】:

    这是一个简单的解决方案,几乎可以满足您的要求:

    array.each_slice(3) { |part| puts part.join(', ') }
    
    #=> black iced coffee, cold brew, espresso
        flat white, frap, latte, drip
        fancy, smancy
    

    但是,这缺少前两行的最后一个逗号。

    如果这很重要,您可以尝试像这样添加它:

    array.each_slice(3) { |part| puts part.join(', ') + ',' }
    
    #=> black iced coffee, cold brew, espresso,
        flat white, frap, latte, drip,
        fancy, smancy,
    

    ...但现在它也在最后一行!

    可能有一种更优雅的方法可以做到这一点,但它有点繁琐......怎么样:

    array.each_slice(3).with_index do |part, i|
      puts part.join(", ") + (array.size % 3 == i ? '' : ',')
    end
    
    #=> black iced coffee, cold brew, espresso,
        flat white, frap, latte, drip,
        fancy, smancy
    

    【讨论】:

    • 很好地发现了尾随的逗号,但您可以使用两个 Array#join 调用来避免像这样搞乱索引。
    【解决方案3】:

    我可能会使用each_slicejoin 来构建各个行:

    a.each_slice(3).map { |a| a.join(', ') }
    

    然后join 再次将这些行连接在一起:

    puts a.each_slice(3).map { |a| a.join(', ') }.join(",\n")
    

    当然,这假定除了最后一行之外的每一行都应该包含三个元素,并且示例输出的第二行是一个错字。

    【讨论】:

      猜你喜欢
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-07
      • 1970-01-01
      • 1970-01-01
      • 2019-04-17
      相关资源
      最近更新 更多