初始化变量OCaml
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初始化变量OCaml相关的知识,希望对你有一定的参考价值。
如何在OCaml中完成相当于int variable;
的操作?也就是说,如何简单地声明变量?根据OCaml手册,似乎只能在一个步骤中声明和初始化变量。如果是这样,为什么这是理想的行为呢?
答案
OCaml中的变量是声明且不可变的。
主要原因是未初始化的变量是错误的来源:
int x; // not initialized
read_and_use(x); // error
通过确保始终初始化变量,可以确保代码中的任何位置都不会发生未经授权的值。
另一点是不变性(与声明性陈述一起):
let x = 4;; (* Declare x *)
let f y = x + y;; (* Use x *)
let x = 5;; (* Declare a new variable with the same name as x *)
assert (f 10 = 14);; (* The x = 4 definition is used, as x is immutable *)
由于变量是常量,声明它们被初始化会不断创建无效变量。这很没用。
事实上,OCaml(和大多数函数语言)中的变量只设置一次,但最初可能看起来很奇怪,但它实际上并没有改变您的语言表达能力,并且有助于使您的代码清晰安全。
另一答案
TL; DR
Simply put:你不需要声明你的函数和变量的类型,因为OCaml会为你解决它们!
let x = 3;;
OCaml使用type inference,这意味着您的编译器会根据您分配的变量类型来推断您的变量类型。
类型推断是在编译时自动推断表达式类型的能力。编译器通常能够推断出函数的类型或函数的类型签名,而没有给出明确的类型注释。在许多情况下,如果类型推断系统足够健壮,或者程序或语言足够简单,则可以完全省略程序中的类型注释。
之所以使用它,是因为它需要通过变量创建来管理。您不需要明确地调出显而易见的东西,编译器会为您处理它。此外,您需要更好地了解代码如何使用您分配的变量。这个article有更多的细节
以上是关于初始化变量OCaml的主要内容,如果未能解决你的问题,请参考以下文章