1.3
pointeur## 3.更多的类型!
正如我们在上一节中看到的内容,OCaml有一个整数`int`类型,以及一个浮点数`float`类型,和Python中一样!唯一的区别是对于不同的类型会有不同的操作符。
| | `int` | `float` |
| -------- | --------- | ---------------------|
| 例子 | `2`, `-2` | `2.`, `1e3`, `3.14` |
| 加法 | `+` | `+.` |
| 减法 | `-` | `-.` |
| 乘法 | `*` | `*.` |
| 除法 | `/` | `/.` |
| 求余数 | `mod` | `mod_float` |
当然OCaml还有其它基本类型。
### 布尔(Boolean)
`bool`类型同样存在于OCaml中,并且运行方式也与在Python中类似。最大的区别在于,我们在书写`true`和`false`时不再大写。尽管逻辑操作符的书写方式并不一样,但是运作方式是一样的。
| | |
| ----------- | ------------------------- |
| 逻辑与 | `&&` |
| 逻辑或 | <code>||</code> |
| 逻辑非 | `not` |
比较操作符和在Python中几乎是一样的:`<`、`<=`、`>`、`>=`。
只有等于号与不等于号有所改变:在OCaml中,我们将分别使用`=`和`<>` (`==`和`!=`也同样存在,但并不是期望中的意义)。比较操作符的优点是,不管何种类型,只要表达式左右两侧是同一类型就可以(我们可以比较两个`int`或者两个`float`,但是不可以比较一个`int`和一个`float`)。
### 文本
在OCaml中,需要区分单个字符与字符串。
- 第一,`char`类型写在单引号之间:'a'。
- 第二,`string`类型写在双引号之间:"Bonjour !"。
注意,`'a'`和`"a"`是不一样的。另外,与支持ASCII表与Unicode(支持带音调字母、其它字母表中字符、表情符号等等)的Python不同,OCaml几乎不支持Unicode:所以我们在使用时最好避免在文本中输入带音调字母。
另外,如同`+`适用于两个整数之间,连接两个`string`类型所使用的的操作符为`^`。
### 从一个类型到另一个类型
OCaml提供了好几个函数来切换不同的类型。 这些函数的名字都有一个固定的格式`DEST_of_ORIG`,`DEST`是目标类型,`ORIG`则是原始类型。比如说,使`float`切换到`int`,我们会使用`int_of_float`。
你现在还不知道如何调用函数,但这是我们下一节的目标!