Herkes bilir ki, en azından C de, printf
formatlanmış bir dize yazdırmak için fonksiyonlar ailesini kullanıyorsunuz . Ve bu işlevler , bir format belirticinin başlangıcını belirtmek için bir yüzde işareti ( %
) kullanır. Örneğin, %d
bir yazdırmak int
ve %u
bir yazdırmak anlamına gelir unsigned int
. printf
İşlevlerin ve biçimlendirmenin yer tutucuların nasıl çalıştığını bilmiyorsanız veya yalnızca bir tazeleme gerekiyorsa , Wikipedia makalesi başlamak için iyi bir yerdir.
Sorum şu, bunun orijinal olmasının veya gelecekte format belirticisi olarak gelecekte seçilmesi gerektiğinin özellikle zorlayıcı bir nedeni var mı?
Açıkçası, karar çok uzun zaman önce verildi (C dilini bile selefine göre çok büyük olasılıkla) ve o zamandan beri "standart" oldu (yalnızca C dilinde değil, aynı zamanda çok sayıda diğer dilde de). sözdizimini çeşitli derecelerde benimsemişlerdir), bu yüzden değişmek için artık çok geç. Ancak, bu seçimin neden ilk başta yapıldığı konusunda bir fikir sahibi olup olmadığına ve benzer bir işlevselliğe sahip yeni bir dil tasarlıyorsa seçimin hala bir anlam ifade edip etmediği konusunda hala merak ediyorum.
Örneğin, C # (ve diğer .NET dil ailesi) ile Microsoft, dize biçimlendirme işlevlerinin işleyişiyle ilgili biraz farklı bir karar vermiştir. Orada bir dereceye kadar güvenlik emri uygulanabilir (her printf
ne kadar C'nin uygulanmasından farklı olarak ) ve bu nedenle karşılık gelen parametrenin tipinin bir göstergesini eklemek gereksizdir, ancak sıfır indeksli küme parantez çiftleri kullanmaya karar vermişlerdir ( {}
). format belirteci olarak, şöyle:
string output = String.Format("In {0}, the temperature is {1} degrees Celsius.",
"Texas", 37);
Console.WriteLine(output);
// Output:
// In Texas, the temperature is 37 degrees Celsius.
String.Format
Yönteme ilişkin belgeler , genel olarak bileşik biçimlendirme hakkında bu makalede olduğu gibi daha fazla bilgi içerir , ancak kesin ayrıntılar oldukça önemsizdir. Mesele şu ki %
, bir format belirleyicinin başlangıcını belirtmek için uzun süredir devam eden uygulamalarını bıraktıklarıdır . C dili sadece kolayca kullanmış olabilir {d}
ve {u}
ancak öyle olmadı. Herkes neden, bu kararın geriye dönük olarak mantıklı gelip gelmediği ve yeni uygulamaların onu takip edip etmemesi gerektiği konusunda herhangi bir fikri var mı?
Açıkçası, dizeye dahil edilebilmesi için kaçmak zorunda kalmayacak bir karakter yok, ancak bu sorun zaten sadece ikisini kullanarak çözüldü . Başka hangi hususlar önemlidir?
{u}
yerine kullanmak mümkün %u
olacaktı ama önemli bir avantajı olacak mıydı? Büyük oranda keyfi bir seçim gibi görünüyor.
{}
C # öğrenen kişilerin başka hiçbir şey öğrenmeye başlamaması için bilerek sözdizimini seçtiklerini söylüyorsunuz ? Bunun tasarım kararlarının bir parçası olsa bile büyük olduğuna inanmak çok zor. İfadenizi bir şekilde yedekleyebilir misiniz?
%
biçimlendirmeyi .NET'in {}
biçimlendirmesine benzer bir şey lehine terk etti çünkü ikincisi daha fazla esneklik sunuyor.