exception - 如何在 Ocaml 的 float 类型中表示空值

标签 exception null pattern-matching ocaml

我知道这可能看起来很基本,但基本上,我想说的是模式匹配

match value with
  Null-> failwith "Empty"
 |value-> #do something

我已经尝试了 null 或 none 的任何变体,并且还尝试了无法使用的单位,因为值是 float 。

我很困惑,任何帮助将不胜感激

最佳答案

你不能。这是一个设计选择。许多语言允许任何值为空。这种方法的问题在于,当程序员不期望时,值会为空,或者代码必须检查每个输入值是否为空。

OCaml 采用的方法是,如果一个值可能为 null,则必须将其显式标记为 null。这是通过选项类型完成的:

match value with
  | None -> failwith "Empty"
  | Some value -> (* do something *)

但是,如果您将其直接替换到程序中,则将无法编译,因为 OCaml 会发现该“值”实际上不能为空。无论创建什么,都需要更新以指示它何时返回“空”值(无):

let safe_divide numerator denominator =
  if denominator <> 0. then
    Some (numerator /. denominator)
  else
    None (* division by zero *)

关于exception - 如何在 Ocaml 的 float 类型中表示空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5020526/

相关文章:

arrays - 与 AND 类似的 Postgres

JAVA,检索值时出现SQL异常

c++ - wchar 以一个或两个空字节结尾?

c# - 哪些类型的异常不要捕获?

swift - 对错误消息感到困惑(lldb)

ios - 如何在 iOS 中检查 NSString 中的 NULL 值?

r - 选择具有类似 grep 部分匹配的 data.table 列

java - 如何快速处理字符串表达式?

c++ try and catch 时的返回值

c++ - 是否有一种模式可以依次执行多个 throw 函数?