2014-02-09 5 views
6

Kra!
Я хотел бы «украсить» выход одного из моих Dart сценариев, например, так:Печать одного и того же символа несколько раз без петли

----------------------------------------- 
OpenPGP signing notes from key `CD42FF00` 
----------------------------------------- 

<Paragraph> 

И мне интересно, если есть особенно простой и/или оптимизирован способ печатая такой же знак x раз в Dart. В Python print "-" * x напечатает символ -x раз.

Учась this answer, для целей данного вопроса, я написал следующий минимальный код, который делает использование класса ядра Iterable:

main() { 
    // Obtained with '-'.codeUnitAt(0) 
    const int FILLER_CHAR = 45; 

    String headerTxt; 
    Iterable headerBox; 

    headerTxt = 'OpenPGP signing notes from key `CD42FF00`'; 
    headerBox = new Iterable.generate(headerTxt.length, (e) => FILLER_CHAR); 

    print(new String.fromCharCodes(headerBox)); 
    print(headerTxt); 
    print(new String.fromCharCodes(headerBox)); 
    // ... 
} 

Это дает ожидаемый результат, но есть лучше путь в Dart, чтобы напечатать символ (или строку) x раз? В моем примере я хочу напечатать символ -headerTxt.length раз.

спасибо.

ответ

6

Я использую этот способ.

void main() { 
    print(new List.filled(40, "-").join()); 
} 

Итак, ваш случай.

main() { 
    const String FILLER = "-"; 

    String headerTxt; 
    String headerBox; 

    headerTxt = 'OpenPGP signing notes from key `CD42FF00`'; 
    headerBox = new List.filled(headerTxt.length, FILLER).join(); 

    print(headerBox); 
    print(headerTxt); 
    print(headerBox); 
    // ... 
} 

Выход:

----------------------------------------- 
OpenPGP signing notes from key `CD42FF00` 
----------------------------------------- 
+0

Ого, безусловно, более читаемым и элегантно! Я не верю, что должен быть более оптимизированный способ использования простых «списков», как вы. – Diti

Смежные вопросы