Vadí tam ten vykřičník nebo ty závorky? Závorky jsou nezvyk, uznávám, ale umožňují některé elegantní věci, například poziční parametry (jeden parametr se může naformátovat vícekrát), pojmenované parametry {resutl}, bližší specifikaci typu, zarovnání atd. Oproti % syntaxi z C (a mnoha dalších jazyků) je to imho čitelnější, protože je krásně vidět začátek a konec formátovacího podřetězce, ale zase se to člověk musí naučit :/
Vykřičník tam je proto, že println! je makro, ne funkce. Je pro to několik důvodů:
- formátovací řetězec je kontrolován v čase překladu při expanzi makra
- makro může akceptovat proměnný počet argumentů (běžná funkce (zatím?) ne)
- může se použít zápis připomínající keyword argumenty známé například z Pythonu
- dokáže rozpoznat, který parametr dereferencovat a udělá to za programátora automaticky (nice to have)