2015-01-20 53 views

回答

10

C#和F#之间的一个根本区别在于F#everything is an expression(而不是混合的表达式和语句)。这包括在C风格语言中的语句,如控制流构造。

以功能性方式进行编程时,您希望可以编写一小段可以组合在一起的引用透明代码。一切都是一种表达的事实正好适用于此。另一方面,当你做某件事情给你一个价值,而你把它留在那里时,你就会反对这种思维方式。你要么做一些副作用,要么你只是在某处留下一段代码。无论是哪种情况,公平的游戏都会警告您您正在做非典型的事情。

F#不鼓励,但不会禁止副作用,并且只要中间类型的类型为unit,就可以让序列执行(可能是副作用)表达式。这就是ignore所做的 - 接受一个参数并返回unit

+0

该链接正是我所期待的,谢谢:) – August 2015-01-21 18:34:08

4

在F#中,大多数情况都是带有值的表达式。 如果你忽略了F#中一个表达式的值,或者没有绑定它或者返回它,那么感觉就像你犯了一个错误。忽略表达式的值表明您正在取决于操作的副作用,而在F#中,您应该避开副作用。