9
A
回答
25
是:
let (+.) x s = [for y in s -> x + y]
let s = 1 +. [2;3;4]
,可以在F#操作者使用的字符列于section 3.7 of the spec。它们分别是!%&*+-./<=>@^|~
和之后的任何字符,?
。优先级和固定性由操作员的第一个字符确定(请参阅规格)。
你可以像上面所做的那样创建你自己的let-bound操作符,在这种情况下,它们就像let-bound函数一样工作。您也可以将它们定义为成员类型:
type 'a Wrapper = Wrapper of 'a with
static member (+!)(Wrapper(x), Wrapper(y)) = Wrapper(x+y)
let w = (Wrapper 1) +! (Wrapper 2)
在这种情况下,你并不需要有预先定义的,让绑定功能,使用操作; F#会在类型上找到它。你可以采取特别好的利用了这一点使用内置定义:
let inline addSpecial a b = a +! b
let w2 = addSpecial w (Wrapper 3)
采取这一更进一步,可以使运营商在你的类型的内联为好,这样就可以在一个更加广泛的实例使用它们你的课程:
type 'a Wrapper = Wrapper of 'a with
static member inline (+!)(Wrapper(x), Wrapper(y)) = Wrapper(x+y)
let wi = (Wrapper 1) +! (Wrapper 2)
let wf = (Wrapper 1.0) +! (Wrapper 2.0)
let wi2 = addSpecial wi wi
let wf2 = addSpecial wf wf
+3
第4.4节(http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/spec.html)有关于中缀操作符的更多信息以及允许使用哪些字符。 – nlucaroni 2010-02-05 22:39:20
相关问题
- 1. 你可以在F#中定义一个运算符(***)吗?
- 2. 你可以在Drupal中创建你自己的钩子吗?
- 3. 你可以在你自己的服务器上运行jekyll吗?
- 4. 你可以在硒中使用typeof操作符吗?
- 5. 你可以在Python中引用自己的类吗?
- 6. 你可以在SQL中编写自定义聚合函数吗?你可以查询分组的内容吗?
- 7. 你可以在Branch.io横幅中自定义显示reviewCount吗?
- 8. 你可以定义DOM Helper吗?
- 9. 制作你自己的pow()
- 10. 你可以为你自己的应用程序使用二进制DLL吗?
- 11. F#有它自己的字符串操作库吗?
- 12. 你可以创建自己的JTA交易吗?
- 13. 你可以从它自己的json对象调用数据吗?
- 14. 你可以切换操作员的边+
- 15. 你可以自定义代码折叠吗?
- 16. 你可以自定义一个mysql_error重复错误消息吗?
- 17. 你可以重写MessageDlg调用自定义TForm /对话框吗?
- 18. 你可以为UITableView单元格插入自定义动画吗?
- 19. 你可以在Coldfusion中一次性定义多个变量吗?
- 20. 你可以在settings.gradle中定义函数吗?
- 21. 你可以在css中定义<iframe> src属性吗?
- 22. 你可以在SQL中定义“文字”表吗?
- 23. 你可以安装你自己的应用程序在您的Windows 7手机
- 24. 你可以在F#中给函数特定的类型签名吗?
- 25. 你可以在不同的OSGi包中有JSF自定义组件吗?
- 26. 你可以在ASP.net Textboxes中制作一个“分隔符”吗? (C#)
- 27. 你可以使用自定义html在页面上替换自己的javascript函数吗?
- 28. 你能建立你自己的MSTEST数据源吗?
- 29. 你能从Codenvy访问你自己的私人git回购吗?
- 30. 你曾经对你自己的Forked repo做过pull request吗?
为了您将来的参考琼 - 这个概念被称为运算符重载。如果你使用Google F#和运算符重载,你会发现很多关于这个主题的内容。 – 2010-02-06 00:41:39
谢谢,未来会这样做。 – 2010-02-08 17:42:34