1.3

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>&#124;&#124;</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`。


你现在还不知道如何调用函数,但这是我们下一节的目标!


Report Page