سؤال
أي من هذه بديلين هل تجد نفسك تستخدم في معظم الأحيان ، الذي هو أكثر "الاصطلاحية"?
- و arg (الكائنات.DoStuff())
- و 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 ، ولكن يمكنني استخدام () من هذه العادة.
كلما كان ذلك ممكنا, أنا أفضل بكثير |> لأنه يقرأ من اليسار إلى اليمين.