我正在玩F#,编译器警告我如果我不使用某些结果(same problem described here)。由于F#甚至具有“忽略”功能,因此它似乎有点重要,但我不明白为什么 - 为什么C#不关心它,但F#呢?为什么F#警告我忽略结果
4
A
回答
10
C#和F#之间的一个根本区别在于F#everything is an expression(而不是混合的表达式和语句)。这包括在C风格语言中的语句,如控制流构造。
以功能性方式进行编程时,您希望可以编写一小段可以组合在一起的引用透明代码。一切都是一种表达的事实正好适用于此。另一方面,当你做某件事情给你一个价值,而你把它留在那里时,你就会反对这种思维方式。你要么做一些副作用,要么你只是在某处留下一段代码。无论是哪种情况,公平的游戏都会警告您您正在做非典型的事情。
F#不鼓励,但不会禁止副作用,并且只要中间类型的类型为unit
,就可以让序列执行(可能是副作用)表达式。这就是ignore
所做的 - 接受一个参数并返回unit
。
4
在F#中,大多数情况都是带有值的表达式。 如果你忽略了F#中一个表达式的值,或者没有绑定它或者返回它,那么感觉就像你犯了一个错误。忽略表达式的值表明您正在取决于操作的副作用,而在F#中,您应该避开副作用。
相关问题
- 1. 忽略警告的危害是什么?
- 2. 为什么MSVC10忽略我的#pragma警告(禁用:4251)?
- 3. 为什么会有警告?我可以忽略它吗?
- 4. 忽略scala的高级功能警告的后果是什么?
- 5. 忽略python警告
- 6. 忽略楠警告
- 7. 忽略PHP警告
- 8. 为什么忽略header()函数我的方法的结果?
- 9. 为什么我会收到“表达结果未使用”警告?
- 10. 为什么我有警告?
- 11. R - 在某些情况下忽略警告,获得结果
- 12. 忽略警告并进行
- 13. 忽略Django中的警告
- 14. 忽略#pragma的警告
- 15. ld:警告:-no_pie为arm64忽略
- 16. 当我从C文件中读取数字时,为什么会忽略忽略'fscanf'返回值的警告?
- 17. 为什么'svn忽略'不能忽略?
- 18. 忽略MySQL警告消息的影响是什么?
- 19. String.Format()的结果被忽略,但为什么?
- 20. 为什么我的DGV.MinimumWidth被忽略?
- 21. 为什么我的.setfocus忽略?
- 22. 为什么我的代码被忽略?
- 23. 为什么我的HttpHandler被忽略?
- 24. 为什么jar忽略我的清单?
- 25. 为什么IE9忽略我的CSS?
- 26. 为什么Log4Net忽略我的logName?
- 27. 为什么我的checkstyle-supressions被忽略?
- 28. 为什么我的ServicePointManager.ServerCertificateValidationCallback被忽略?
- 29. 为什么maven忽略我的JAVA_HOME?
- 30. 为什么Magento忽略我的frontName?
该链接正是我所期待的,谢谢:) – August 2015-01-21 18:34:08