在OCaml中,如何等效于int variable;
?也就是说,如何简单地声明一个变量?根据OCaml手册,似乎只能一步一步声明和初始化变量。如果是这样,为什么会有这种期望的行为?
答案 0 :(得分:2)
OCaml中的变量是声明的并且是不可变的。
主要原因是未初始化的变量是错误的来源:
public function up()
{
Schema::create('fakultas', function (Blueprint $table) {
$table->increments('id');
$table->string('nama_fakultas');
$table->string('nama_universitas')->unsigned();
$table->foreign('nama_universitas')->references('id')->on('universitas');
$table->string('keterangan');
$table->timestamps();
});
}
通过确保始终对变量进行初始化,可以确保代码中的任何地方都不会发生未经授权的值。
另一点是不变性(声明性语句随附):
int x; // not initialized
read_and_use(x); // error
由于变量是常量,因此声明它们已初始化将创建不断无效的变量。那就没用了。
在OCaml(和大多数功能语言)中设置一次且仅一次设置变量的事实乍看起来似乎很奇怪,但这实际上并不会改变语言的表达能力,并有助于使代码清晰安全。
答案 1 :(得分:1)
TL; DR
Simply put:您不需要声明函数和变量的类型,因为OCaml会为您解决它们!
let x = 3;;
OCaml使用type inference,这意味着编译器会根据您为其分配的变量来推断变量类型。
类型推断是在编译时自动部分或完全推断表达式类型的能力。编译器通常能够推断变量的类型或函数的类型签名,而无需给出明确的类型注释。在很多情况下,如果类型推断系统足够健壮,或者程序或语言足够简单,就有可能完全忽略程序中的类型注释。
之所以使用它,是因为它使管理工作不再需要创建变量。您无需显式地调用明显的内容,编译器会为您处理。此外,您需要更好地了解代码如何使用分配的变量。这个article有更多细节