Ocaml学习笔记 语句
一、 ;;终结符
在Ocaml中使用;;作为终结符,表示一个赋值语句,一个函数,一个模块或者一个类的终结的。在Ocaml的toplevel中只有输入;;终结符,才会对你输入的程序进行编译,然后执行,输出结果。
二、 let 绑定
BNF定义:
let-binding::= pattern = expr
∣ value-name { parameter } [: typexpr] = expr
在Ocaml中是通过let绑定来进行变量的赋值和函数的定义的。
使用示例如下:
1、变量赋值
# let a = 123;;
val a : int = 123
2、函数定义
# let square x = x *. x;;
val square : float -> float =
# square 5.;;
- : float = 25.
在上例中我们用let绑定定义了一个square函数来计算一个浮点数的平方
三、 赋值语句
1、在let绑定中我们演示了一个变量声明并赋值的例子。例子声明了一个全局变量a,并对a进行了赋值,
2、但在Ocaml的函数内部,还有局部变量的概念,同样需要声明一个局部变量,并对局部变量进行复制,同全局变量不同的是需要在赋值结束是要加一个in,用来表明这是一个局部变量
示例如下
# let square x =
let b = x in
b *. b;;
val square : float -> float =
# square 5.;;
- : float = 25.
四、 引用
1、Ocaml是一个常量语言,常量语言的意思就是如果一个变量如果已经定义了,那么它的值在运行时是不可以改变的。这点比较类似java。
2、和java中相似,如果一个变量的值改变了,实际上是重新创建了一个变量,然后将变量指向新创建的变量。
3、同java类似,复杂数据是应用传递的,因此我们可以修改复杂数据的数据成员来改变复杂数据的值
4、Ocaml通过重载操作符的方式,创造了一个引用的概念。
引用的使用如下:
引用的定义,要使用引用,必须用ref关键字来表明取得是引用:
# let a = ref 0;;
val a : int ref = {contents = 0}
引用的取值,要获取变量引用的值,必须通过!操作符来获取引用的内容:
# !a;;
- : int = 0
# a;;
- : int ref = {contents = 0}