ทุกคนรู้ว่าอย่างน้อยใน C คุณใช้printf
ตระกูลฟังก์ชันเพื่อพิมพ์สตริงที่จัดรูปแบบ และฟังก์ชั่นเหล่านี้ใช้เครื่องหมายเปอร์เซ็นต์ ( %
) เพื่อระบุจุดเริ่มต้นของตัวระบุรูปแบบ ยกตัวอย่างเช่น%d
หมายถึงการพิมพ์int
และวิธีการในการพิมพ์%u
unsigned int
หากคุณไม่คุ้นเคยกับการprintf
ทำงานของตัวยึดตำแหน่งและการจัดรูปแบบหรือเพียงต้องการทบทวนบทความ Wikipediaเป็นจุดเริ่มต้นที่ดี
คำถามของฉันคือมีเหตุผลที่น่าสนใจเป็นพิเศษหรือไม่ว่าทำไมจึงควรเลือกใช้ตัวเลือกรูปแบบในอนาคตในอนาคต
เห็นได้ชัดว่าการตัดสินใจทำมานานแล้ว (น่าจะเป็นบรรพบุรุษของภาษา C) และมันก็เป็น "มาตรฐาน" มากขึ้นเรื่อย ๆ ตั้งแต่นั้นมา (ไม่เพียง แต่ใน C แต่ยังอยู่ในภาษาอื่นอีกมากมาย ได้ปรับใช้ไวยากรณ์กับองศาที่แตกต่างกัน) ดังนั้นมันจึงสายเกินไปที่จะเปลี่ยนแปลง แต่ฉันก็ยังสงสัยว่าใครมีความเข้าใจว่าทำไมตัวเลือกนี้อาจเกิดขึ้นตั้งแต่แรกและไม่ว่ามันจะสมเหตุสมผลหรือไม่ถ้าเป็นคนออกแบบภาษาใหม่ด้วยฟังก์ชั่นที่คล้ายกัน
ตัวอย่างเช่นด้วย C # (และตระกูลอื่น ๆ ของ. NET languages) Microsoft ตัดสินใจแตกต่างกันเล็กน้อยเกี่ยวกับการทำงานของฟังก์ชั่นการจัดรูปแบบสตริง แม้ว่าความปลอดภัยบางประเภทสามารถบังคับใช้ได้ที่นั่น (ไม่เหมือนกับการนำไปใช้printf
ใน C) และดังนั้นจึงไม่จำเป็นต้องมีการระบุประเภทของพารามิเตอร์ที่สอดคล้องกันพวกเขาตัดสินใจที่จะใช้เครื่องหมายปีกกาคู่ (ดัชนีศูนย์{}
) เป็นตัวระบุรูปแบบเช่น:
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
วิธีการประกอบด้วยข้อมูลเพิ่มเติมเช่นเดียวกับบทความนี้เกี่ยวกับการจัดรูปแบบคอมโพสิตโดยทั่วไปแต่รายละเอียดที่แน่นอนค่อนข้างไม่สำคัญ ประเด็นก็คือพวกเขาละทิ้งแนวทางปฏิบัติที่ใช้มายาวนาน%
เพื่อระบุจุดเริ่มต้นของตัวระบุรูปแบบ ภาษา C ก็อาจได้ใช้งานได้ง่าย{d}
และ{u}
แต่มันก็ไม่ได้ ใครมีความคิดเห็นเกี่ยวกับสาเหตุว่าทำไมการตัดสินใจครั้งนี้สมเหตุสมผลหรือไม่และการใช้งานใหม่ควรทำตามหรือไม่
เห็นได้ชัดว่าไม่มีตัวละครที่สามารถเลือกได้ซึ่งไม่จำเป็นต้องหลบหนีเพื่อให้สามารถรวมอยู่ในสตริงได้ แต่ปัญหานั้นแก้ไขได้ค่อนข้างดีโดยใช้เพียงสองตัวเท่านั้น ข้อพิจารณาอื่น ๆ ที่เกี่ยวข้อง?
{u}
แทน%u
แต่มันจะมีข้อได้เปรียบที่สำคัญ? ดูเหมือนว่าเป็นทางเลือกโดยพลการส่วนใหญ่
{}
ไวยากรณ์เพื่อให้คนที่เรียนรู้ C # จะไม่เริ่มเรียนรู้อะไรอีกหรือ ฉันพบว่ามันยากมากที่จะเชื่อว่านี่เป็นส่วนสำคัญในการตัดสินใจออกแบบของพวกเขา คุณสามารถสำรองคำสั่งของคุณอย่างใด?
%
การจัดรูปแบบในความโปรดปรานของสิ่งที่คล้ายกับ .NET ของ{}
การจัดรูปแบบเพราะข้อเสนอหลังความยืดหยุ่นมากขึ้น