Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Variables 初始化变量OCaml_Variables_Initialization_Ocaml_Declare - Fatal编程技术网

Variables 初始化变量OCaml

Variables 初始化变量OCaml,variables,initialization,ocaml,declare,Variables,Initialization,Ocaml,Declare,如何等效于int变量在OCaml中?也就是说,如何简单地声明变量?根据OCaml手册,似乎只能在一个步骤中声明和初始化变量。如果是这样的话,为什么会有这样的行为呢?OCaml中的变量是声明的且不可变的 主要原因是未初始化的变量是错误的来源: int x; // not initialized read_and_use(x); // error 通过确保始终初始化变量,可以确保代码中任何地方都不会出现未经授权的值 另一点是不变性(声明性语句附带): 由于变量是常量,因此声明它们已初始化将不断创建

如何等效于
int变量在OCaml中?也就是说,如何简单地声明变量?根据OCaml手册,似乎只能在一个步骤中声明和初始化变量。如果是这样的话,为什么会有这样的行为呢?

OCaml中的变量是声明的且不可变的

主要原因是未初始化的变量是错误的来源:

int x; // not initialized
read_and_use(x); // error
通过确保始终初始化变量,可以确保代码中任何地方都不会出现未经授权的值

另一点是不变性(声明性语句附带):

由于变量是常量,因此声明它们已初始化将不断创建无效变量。这是毫无用处的

OCaml(以及大多数函数式语言)中的变量设置一次且仅设置一次这一事实起初可能看起来很奇怪,但实际上它并没有改变您的语言表达能力,并有助于使您的代码清晰、安全。

TL;博士

:您不需要声明函数和变量的类型,因为OCaml只需为您找出它们<代码>设x=3

OCaml使用这意味着您的编译器根据您分配给它的变量来推断您的变量类型

类型推断是在编译时自动推断(部分或全部)表达式类型的能力。编译器通常能够推断变量的类型或函数的类型签名,而不需要给出显式的类型注释。在许多情况下,如果类型推理系统足够健壮,或者程序或语言足够简单,则可以完全省略程序中的类型注释

之所以使用它,是因为它将内务管理从变量创建中去除。您不需要显式地调用显而易见的内容,编译器会为您处理这些内容。此外,您需要更好地理解代码是如何使用分配的变量的。这有更多的细节

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 *)