Q
如何寫綴函數
10
A
回答
16
現有的答案是正確的 - 你不能在F#中定義一箇中綴函數(只是一個自定義的中綴運算符)。除了與運營商管道的把戲,你也可以使用擴展成員:
// Define an extension member 'modulo' that
// can be called on any Int32 value
type System.Int32 with
member x.modulo n = x % n
// To use it, you can write something like this:
10 .modulo 3
注意.
之前的空間是必要的,因爲否則編譯器試圖解釋10.m
作爲數字文字(如10.0f
)。
我覺得這有點比使用管道招更優雅,因爲F#支持實用的風格和麪向對象的風格和擴展方法是 - 在某種意義上 - 接近等同於隱含的運營商從實用的風格。流水線技巧看起來像是對操作符的輕微誤用(它最初可能看起來很混亂 - 或許比方法調用更令人困惑)。
這麼說,我看到人們使用其他運營商,而不是管道 - 也許是最有趣的版本是這樣的一個(也使用的事實,你可以省略的運營商空格):
// Define custom operators to make the syntax prettier
let (</) a b = a |> b
let (/>) a b = a <| b
let modulo a b = a % b
// Then you can turn any function into infix using:
10 </modulo/> 3
但即使這在F#世界中並不是一個成熟的習慣用法,所以我可能仍然更喜歡擴展成員。
6
不,我知道的,但你可以使用左,右管道運營商。例如
let modulo x y = x % y
let FourMod3 = 4 |> modulo <| 3
+0
上面被認爲是'僞中綴' 沒有錯,它只是指向說出來,其實我喜歡這個符號有時候 – BoomTownTech 2015-10-14 20:36:26
相關問題
- 1. 如何重寫jQuery函數?
- 2. 如何編寫函數?
- 3. 如何編寫php函數
- 4. 如何編寫saveTable函數?
- 5. 如何寫入to_string函數?
- 6. 如何編寫SQL函數
- 7. 如何編寫擴展網絡前綴?
- 8. 詞綴不是函數
- 9. 評價後綴函數
- 10. 前綴擴展函數
- 11. 如何用前綴和後綴創建一個影響id的jquery函數?
- 12. 如何有效地寫長度前綴的二進制數據
- 13. 如何編寫函數併爲jQuery函數傳遞參數
- 14. 如何部分應用基礎知識等中綴函數?
- 15. 如何使用類的構造函數中綴形式
- 16. 如何在Python中編寫函數
- 17. 如何寫一個ConvertString函數
- 18. 如何爲此編寫javaScript函數?
- 19. 如何爲ede編寫定位函數
- 20. 如何停止/重寫Jquery TimeOut函數?
- 21. Django的:如何寫反函數以下
- 22. 如何在Haskell中編寫showIt函數?
- 23. 如何寫jQuery返回函數
- 24. 如何寫型堆的一類函數
- 25. Gmock - 如何重寫庫函數
- 26. 如何在prolog中編寫unflatten函數?
- 27. C++如何寫一個構造函數?
- 28. 如何寫std :: bind與構造函數
- 29. 我不懂如何編寫display_items函數
- 30. 如何編寫自定義函數CNTK
你可能感興趣的[This UserVoice issue](http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2313479-provide-the-option-of-having-infix-notation-在樂趣)。 – Daniel 2013-05-14 17:02:03
您可能感興趣http://stackoverflow.com/questions/2210854/can-you-define-your-own-operators-in-f – ony 2013-05-14 17:05:57