Başka dillerde de bulunan bir olanak Phobos'ta da desteklenmeye başlamış. Tamamen atlamışım! :)
Düzen dizgisinde % karakterinden hemen sonra artık parametre 1$ numarası verilebiliyormuş. Bu numaralar POSIX standardındaki gibiymiş. Örneğin "%s" yerine "%1$s" yazılabiliyor ve "birinci parametreyi buraya yerleştir" anlamına geliyor:
import std.stdio;
void main()
{
writefln("%2$s %1$s", 42, 7);
}
Oradaki düzen karakteri önce 2 numaralı, sonra 1 numaralı parametreyi yazdırdığı için çıktısı şöyle oluyor:
'7 42'
Bunun bir yararı, örneğin İngilizce ve Türkçe çalışabilen bir programda görülebilir. "Drive %s has %s free space" gibi bir İngilizce mesaj olsa:
import std.stdio;
void main()
{
auto sürücü = "C";
auto boşYer = "10G";
writefln("Drive %s has %s free space", sürücü, boşYer);
}
ama sonradan o mesajı değiştirsek:
writefln("There is %s free space on drive %s", sürücü, boşYer);
yanlış olur! Çünkü parametrelerin yerlerini değiştirmeyi unuttuk! Parametrelerin yerlerini değiştirince düzelir:
writefln("There is %s free space on drive %s", boşYer, sürücü);
Aynı sorun mesajı şimdi Türkçeleştirdiğimizde de görülür:
writefln("%s sürücüsünde %s boş yer var", boşYer, sürücü);
Şimdi parametrelerin yerlerini yine değiştirmek gerekecek. Uzattım... :)
Düzen dizgisinde parametre numaraları kullanınca sorun kalmaz. İlk program:
import std.stdio;
void main()
{
auto sürücü = "C";
auto boşYer = "10G";
writefln("Drive %1$s has %2$s free space", sürücü, boşYer);
}
İngilizce mesajı değiştirdiğimizde yalnızca düzen dizgisinde numaralı parametrelerin yerlerini değiştiririz:
writefln("There is %2$s free space on drive %1$s", sürücü, boşYer);
Türkçeleştirince de:
writefln("%1$s sürücüsünde %2$s boş yer var", sürücü, boşYer);
Numaralı parametrelerin bir başka yararı da belirli bir parametrenin birden fazla tekrarlanabilmesi:
int yıl = 2011;
int ay = 2;
int gün = 28;
char ayraç = '.';
writefln("%3$02s%4$s%2$02s%4$s%1$s", yıl, ay, gün, ayraç);
İyice karışık olsun diye boşlukları 0 ile doldurmak için, ve günü ve ayı iki hanede yazdırmak için 02 de kullandım. :D Çıktısı:
'28.02.2011'
Gördüğünüz gibi 4 numaralı parametre olan ayracı iki kere kullanabildim.
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]