如果我支持Fvoid类型,为什么需要在F#中使用单位类型?

用户名

我读了这篇MSDN文章:

单位类型(F#)

...单位类型是指示缺少特定值的类型;单元类型只有一个值,当不存在其他值或不需要其他值时,它将用作占位符...单元类型类似于C#和C ++等语言中的void类型。

所以...好吧,我知道,单位类型就是这样的类型,它只有一个值()但是我有一些问题:

  1. 为什么需要它?
  2. 什么时候需要?

我不明白为什么不像在C#和C ++中那样在F#中使用void类型。

如果我看下表:

基本类型(F#)

Type   .NET Type    Description  
void   Void         Indicates no type or value.

我看到F#确实有一个void类型。所以我不明白为什么需要单位类型;看起来与void非常相似。

我想它与功能语言范例有关,这就是为什么需要它的原因,所以请...向我详细说明。

千伏特

在C#中,没有void可以用作参数类型的type值。此外,void不能用作泛型类型参数(例如,C#需要使用并行Func<...>Action<...>委托类型,但是F#仅需要... -> ...可以对这两者进行抽象的单个函数类型)。在许多情况下,这最终大大简化了F#编程。例如,Async执行一些副作用但不返回值的动作是type的实例Async<unit>,但是在C#中无法创建对应的内容Task<void>或其他内容。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果它支持空类型,为什么还要在F#中使用单位类型?

来自分类Dev

为什么我需要在声明中使用类型断言来将变量分配为null?

来自分类Dev

我需要在VirtualBox网络中使用哪种网络类型?

来自分类Dev

为什么要在Java中使用特定类型的列表

来自分类Dev

为什么要在JSON响应中使用类型

来自分类Dev

为什么要在JSON响应中使用类型

来自分类Dev

为什么我需要在Android中使用super()?

来自分类Dev

如果我在C#代码中使用继承,是否需要在数据库中包含“类型”列?

来自分类Dev

F#类型与“:?Type as name”匹配:为什么我们需要一个新名称?

来自分类Dev

为什么我需要在Swift的类中指定变量的类型?

来自分类Dev

为什么我需要在C#显式实现中将'this'转换为接口类型?

来自分类Dev

在C#中使用F#类型

来自分类Dev

为什么我们需要在fdisk中指定分区类型,然后再在mkfs中指定分区类型?

来自分类Dev

为什么需要在Swift的类中指定变量的类型?

来自分类Dev

为什么需要在Typescript中键入强制类型转换?

来自分类Dev

为什么需要在此C ++模板中指定类型?

来自分类Dev

重载方法需要在Scala中使用结果类型?

来自分类Dev

为什么我们需要在图灵的暂停证明中使用否定部分?

来自分类Dev

为什么我永远不需要在Redux中使用subscription?

来自分类Dev

为什么我需要在工厂中使用angular.copy?

来自分类Dev

为什么我需要在C#和PostgreSQL中使用Npgsql引用列和表?

来自分类Dev

为什么我需要在RegEx中使用双花括号?

来自分类Dev

为什么我们需要在famo.us中使用TransitionableTransform类?

来自分类Dev

为什么我需要在C ++中使用`size_t`?

来自分类Dev

为什么我们需要在Inno Setup中使用#expr指令?

来自分类Dev

为什么我需要在Django的TestCase中使用辅助方法create_user()?

来自分类Dev

为什么我需要在using块中使用odbcconnection.open

来自分类Dev

为什么我需要在索引中使用下划线命名属性?

来自分类Dev

为什么我们需要在图灵的暂停证明中使用否定部分?

Related 相关文章

  1. 1

    如果它支持空类型,为什么还要在F#中使用单位类型?

  2. 2

    为什么我需要在声明中使用类型断言来将变量分配为null?

  3. 3

    我需要在VirtualBox网络中使用哪种网络类型?

  4. 4

    为什么要在Java中使用特定类型的列表

  5. 5

    为什么要在JSON响应中使用类型

  6. 6

    为什么要在JSON响应中使用类型

  7. 7

    为什么我需要在Android中使用super()?

  8. 8

    如果我在C#代码中使用继承,是否需要在数据库中包含“类型”列?

  9. 9

    F#类型与“:?Type as name”匹配:为什么我们需要一个新名称?

  10. 10

    为什么我需要在Swift的类中指定变量的类型?

  11. 11

    为什么我需要在C#显式实现中将'this'转换为接口类型?

  12. 12

    在C#中使用F#类型

  13. 13

    为什么我们需要在fdisk中指定分区类型,然后再在mkfs中指定分区类型?

  14. 14

    为什么需要在Swift的类中指定变量的类型?

  15. 15

    为什么需要在Typescript中键入强制类型转换?

  16. 16

    为什么需要在此C ++模板中指定类型?

  17. 17

    重载方法需要在Scala中使用结果类型?

  18. 18

    为什么我们需要在图灵的暂停证明中使用否定部分?

  19. 19

    为什么我永远不需要在Redux中使用subscription?

  20. 20

    为什么我需要在工厂中使用angular.copy?

  21. 21

    为什么我需要在C#和PostgreSQL中使用Npgsql引用列和表?

  22. 22

    为什么我需要在RegEx中使用双花括号?

  23. 23

    为什么我们需要在famo.us中使用TransitionableTransform类?

  24. 24

    为什么我需要在C ++中使用`size_t`?

  25. 25

    为什么我们需要在Inno Setup中使用#expr指令?

  26. 26

    为什么我需要在Django的TestCase中使用辅助方法create_user()?

  27. 27

    为什么我需要在using块中使用odbcconnection.open

  28. 28

    为什么我需要在索引中使用下划线命名属性?

  29. 29

    为什么我们需要在图灵的暂停证明中使用否定部分?

热门标签

归档