سؤال

> seq { for i in 0..3 do yield float i };;
val it : seq<float> = seq [0.0; 1.0; 2.0; 3.0]
> seq [ for i in 0..3 do yield float i ];;
val it : seq<float> = [0.0; 1.0; 2.0; 3.0]

وP.S. لماذا F # يتوقع أصلا متواليات دون البادئة "يليها"، ولكن الآن يريدون البادئة؟

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

المحلول

والمزيد من التوضيح على اثنين من النماذج التي نشرت:

وأول واحد يستخدم تسلسل الفهم المباشر "، يليها {...}". وكان "يليها" جزء اختياري من قبل، ولكن هذا لن يكون معتمدا في المستقبل. أعتقد أنه يجعل أشياء مثل "المتزامن {...}" وبناء الجملة سير العمل أكثر صعوبة أو شيء من هذا.

والآن، والثانية هي قائمة النقي:

> let x = [ for i in 0..3 do yield float i ];;

val x : float list

و"يليها" هو أيضا وظيفة:

> seq;;
val it : (seq<'a> -> seq<'a>) = <fun:clo@0_1>

ولأن أي قائمة هي أيضا تسلسل، والقيام "يليها [1؛ 2؛ 3؛]" هو مجرد تطبيق وظيفة بعدها إلى القائمة. انها شيء على مثل الصب أن يليها من نوع القائمة.

> x;;
val it : float list = [0.0; 1.0; 2.0; 3.0]

> seq x;;
val it : seq<float> = [0.0; 1.0; 2.0; 3.0]

وتحرير: المصدر عن وظيفة يليها هو:

let seq (x : seq<_>) = (x :> seq<_>)

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

نصائح أخرى

والأول هو يليها (IEnumerable).

والثاني هو غريب. تخلص من "يليها" وانها الفهم القائمة (قائمة). ليس هناك سبب لأنه يكتب كما هو. إما استخدام يليها {} أو [] أو [| |] لجعل يليها أو قائمة أو صفيف

.

ووcurlies وليس مسبوقة من قبل وما يليها، هو النموذج الذي سيتم إهمال، لأنه يجعل بعض أجزاء أخرى من لغة يحتمل أن تكون غامضة.

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