سؤال

ولدي قائمة من المجموعات التي تمثل إحداثيات نقطة. كيف يمكنني فرزها حسب القيمة الأولى أو الثانية، لدرجة أنني يمكن أن تأمر نقاطي من اليسار إلى اليمين أولا ومن أعلى إلى أسفل في المرة القادمة؟

هل كانت مفيدة؟

المحلول

ويبدو أنك تريد منها مثلا.

myList |> List.sortBy fst

<وأ href = "http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/FSharp.Core/Microsoft.FSharp.Collections.List.html" يختلط = "نوفولو noreferrer "> http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/FSharp.Core/Microsoft.FSharp.Collections.List.html

ولكن الصفوف دعم المساواة الهيكلية والمقارنة، وبالتالي فإن الفرز الافتراضي (المعجمي) قد تفعل ما تريد.

نصائح أخرى

ملاحظة جانبية:

وهذا ليس حول فرز ولكن إذا تنسق باستخدام tupled الخاص بك قد ترغب في استخدام <لأ href = "http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/ FSharp.Core / Microsoft.FSharp.Collections.type_Set-1.html "يختلط =" نوفولو noreferrer "> تعيين بدلا من قائمة. باستخدام مجموعة ساعدني لتبسيط تنفيذ نظري تتريس .

 let sorted = List.sort_by (fun (a,b) -> a,b) myList

وتغيير أ، ب إذا كنت في حاجة إلى العكس

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