【问题标题】:How to printf a array without describing the format of each element?如何在不描述每个元素格式的情况下打印数组?
【发布时间】:2013-08-29 17:06:40
【问题描述】:

我想打印几个数组,输出元素的字段宽度为 3 ,我想我可以使用 printf ,但是如果我使用 printf 那么我需要编写数组所有元素的格式,但是数组很大。

例如

@array = (1,10,100,30);
printf ("%3d %3d %3d %3d\n",$array[0],$array[1],$array[2],$array[3]);

我知道我可以使用循环来打印一个元素,直到所有数组都循环通过,但我认为这不是一个好主意。

有没有什么方法可以让我一次描述元素的格式,然后自动应用于整个数组?

这样的?

printf ("%3d\n",@array);

谢谢

【问题讨论】:

    标签: arrays perl printf


    【解决方案1】:

    这里有两种方法:

    1. 使用循环

      printf "%3d ", $_  for @array;
      print "\n";
      
    2. 使用x 运算符构建可变长度模板

      printf "%3d " x @array . "\n", @array;
      

    【讨论】:

      【解决方案2】:

      试试这个混合物:

      print( map( {sprintf("%3d\n", $_)} @array));
      

      【讨论】:

      • * print join(" ", map { sprintf "%3d", $_ } @array), "\n"
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-26
      • 1970-01-01
      • 2019-04-15
      相关资源
      最近更新 更多