سؤال

أي من هذه بديلين هل تجد نفسك تستخدم في معظم الأحيان ، الذي هو أكثر "الاصطلاحية"?

  1. و arg (الكائنات.DoStuff())
  2. و arg <| الكائنات.DoStuff()
هل كانت مفيدة؟

المحلول

عموما, أنا لا أعرف أن واحدا أو أكثر الاصطلاحية.

شخصيا, المرة الوحيدة التي يمكنني استخدام <| مع "رفع":

raise <| new FooException("blah")

وبصرف النظر عن هذا, أنا دائما استخدام parens.علما أنه منذ أكثر و# رمز يستخدم وظائف بالكاري, هذا لا تنطوي عادة على أي "خارج" parens:

f arg (g x y)

عندما تحصل في غير بالكاري وظائف والمنشئات وغيرها أن يبدأ الحصول على أقل جدا:

f arg (g(x,y))

ربما على الأقل النظر في تغيير F# لغات القواعد بحيث عالية الأسبقية التطبيقات ربط أكثر بإحكام.الآن

f g()

يوزع مثل

f g ()

ولكن الكثير من الناس ترغب في ذلك تحليل كما

f (g())

(تحفيز الحال في السؤال الأصلي).إذا كان لديك رأي قوي عن هذا, ترك تعليق على هذا الرد.

نصائح أخرى

لأن نوع الاستدلال يعمل من اليسار إلى اليمين ، مكافأة باستخدام |> هو أنه يسمح F# للاستدلال على نوع من الحجة الدالة.

كما المفتعلة سبيل المثال ،

[1; 2; 3] |> (fun x -> x.Length*2)

يعمل على ما يرام, ولكن

(fun x -> x.Length*2) [1; 2; 3]

يشكو من "البحث في موضوع غير محدد نوع".

يمكنني استخدام () أكثر من ذلك بكثير في كثير من الأحيان, ولكن هذا مجرد تفضيل ، أنا متأكد من أن <| أكثر idomatic ، ولكن يمكنني استخدام () من هذه العادة.

كلما كان ذلك ممكنا, أنا أفضل بكثير |> لأنه يقرأ من اليسار إلى اليمين.

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