سؤال

لقد حصلت على بعض التعليمات البرمجية لمعالجة البيانات التي تبث ملف CSV في النهاية.

لقد بدأت في ترقيته لإضافة وحدات القياس في كل مكان، ولكن لدي الآن مشكلة مع وظيفة CSV الخاصة بي:

val WriteCSV : string -> 'a list array -> 'b list -> string -> unit

(المعلمات هي اسم الملف، وصفيف الأعمدة، ورؤوس الأعمدة، والفاصل)

حيث قمت سابقًا بإرسال [|s;x;y|] إلى WriteCSV، أواجه الآن مشكلة، لأنني لا أستطيع إرسال [|skm;xmm;يم|].

حاولت كتابة دالة لإزالة وحدات القياس بشكل عام، لكنها لا تعمل.

let removeUnit (n:float<_>) = n/1.0<_>

أسئلتي هي:

  • لماذا لا يعمل؟
  • هل يمكن جعلها تعمل؟
  • هل هناك طريقة أخرى لحل هذه المشكلة بالذات؟
هل كانت مفيدة؟

المحلول

إذا فهمت مشكلتك بشكل صحيح، فإن تحويلها إلى عوامة "نقية" يؤدي إلى إزالة الوحدة.على سبيل المثال:

[<Measure>] type m
[<Measure>] type km

let removeUnit (x:float<_>) =
    float x

let foo = removeUnit 2.6<m>
let foo2 = removeUnit 2.1<km>

فال إزالة الوحدة :تعويم<'u> -> تعويم

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