Главная > Perl > День 2: Красота Форматирования

День 2: Красота Форматирования

Представляю перевод на русский язык второй статьи (Day 2: The beauty of formatting) цикла Perl 6 Advent Calendar. Статья посвящена форматированию в Perl 6.

Разворачиваем второй подарок, который принёс нам на рождество Perl 6, и находим… метод с именем .fmt.

Если вы знакомы со sprintf, то будете чувствовать себя как дома с .fmt. Если же вы не знаете про sprintf или же знаете недостаточно, то подробности можно узнать на соответствующей странице perldoc. Хоть она и длинная, не углубляйтесь. Просто наслаждайтесь этим.

Вернемся к .fmt, храброй младшей сестре sprintf. Вот несколько способов использования .fmt для форматирования строк и чисел:

say 42.fmt('%+d')                # '+42'
say 42.fmt('%4d')                # '  42'
say 42.fmt('%04d')               # '0042'
say :16<1337f00d>.fmt('%X')      # '1337F00D'

Все это хорошо и замечательно, но не более чем короткая форма sprintf. Большое дело, верно?

Я еще не рассказал вам, что метод .fmt перегружен и работает по-разному на массивах (или точнее на списках):

say <huey dewey louie>.fmt       # 'huey dewey louie'
say <10 11 12>.fmt('%x')         # 'a b c'
say <1 2 3>.fmt('%02d', '; ')    # '01; 02; 03'

Кроме того, .fmt так же переопределен и на хэшах:

say { foo => 1, bar => 2 }.fmt   # 'foo     1
                                 #  bar     2'

say { Apples => 5, Oranges => 10 }.fmt('%s cost %d euros')
                                 # 'Apples cost 5 euros
                                 #  Oranges cost 10 euros'

say { huey => 1, dewey => 2, louie => 3 }.fmt('%s', ' -- ')
                                 # 'huey -- dewey -- louie'

При работе с хешами результат может выводиться в другом порядке, отличном от представленного выше. Ах да, и там .fmt так же перегружен для пар, но это работает аналогично и для одной. (прим. переводчика: не понял смысла последнего предложения, просьба поправить)

.fmt является маленьким полезным инструментом, когда вам нужно изменить некоторое значение, или массив, или хеш в некотором заданном формате. Это как sprintf, только еще для массивов и хешей.

В этом есть только одна проблема: Perl 6 может подпортить репутацию семейства языков Perl как ужасно читаемых. Для противостояния этой опасности, я оставлю маленький прощальный подарок в форме простой, но густой рождественской ели, написанной на Perl 6 в одну строку:

$ perl6 -e 'say " "x 9-$_,"#"x$_*2-1 for 0..9,2 xx 3'
          #
         ###
        #####
       #######
      #########
     ###########
    #############
   ###############
  #################
         ###
         ###
         ###
VN:F [1.9.13_1145]
Rating: 7.2/10 (5 votes cast)
День 2: Красота Форматирования, 7.2 out of 10 based on 5 ratings
Categories: Perl Tags: