F# اكتب الاستدلال في سلاسل التنسيق

StackOverflow https://stackoverflow.com/questions/616879

  •  03-07-2019
  •  | 
  •  

سؤال

كيف يمكن لـ F# فحص سلاسل التنسيق في وقت الترجمة لتحديد أن x يحتوي على نوع int في التعريف التالي؟

let foo x = sprintf "%d" x`? 

هل هذا مشفر في اللغة أم يمكن لشخص ما أن يكتب وظيفة "my_print" الخاصة به والتي تستخدم سلاسل التنسيق ذات بناء جملة مختلف؟على سبيل المثال:

let foo x = my_print "{integer}" x
هل كانت مفيدة؟

المحلول

يمكنك قراءة القليل عنها في 6.4.17 (تنسيقات 'printf') هنا, ، ولكن باختصار

  • انها مدمجة في اللغة
  • يمكن "إجبار" سلسلة حرفية بشكل فعال على نوع "التنسيق" الغريب
  • يتوقع printf والأصدقاء وسيطة أولى من نوع التنسيق، مما يؤدي إلى حدوث الإكراه

والنتيجة النهائية هي أنه يمكنك إنشاء وظائف نمط printf الخاصة بك، ولكن يجب عليك استخدام نفس تنسيقات %s، نظرًا لأن هذه العناصر مدمجة.

نصائح أخرى

هنا مثال على كيف يمكنك بناء printf- بنفسك وظائف النمط في F #. لا يمكنك تغيير شكل المتخصصين (مثل "٪ د")، ولكن يمكنك الاستفادة من المتخصصين الحالية لبناء وظائف إضافية التنسيق سلسلة المترجم سيكتبه الاختيار.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top