logo资料库

【首发】ElixirSchool中文版.pdf

第1页 / 共165页
第2页 / 共165页
第3页 / 共165页
第4页 / 共165页
第5页 / 共165页
第6页 / 共165页
第7页 / 共165页
第8页 / 共165页
资料共165页,剩余部分请下载后查看
基础知识教程,受 的 启发编写。 欢迎你的反馈和参与 关于 是一种动态的函数编程语言,用来编写可扩展和易于维护的应用。 语言是构建在久经检验的 迟和高容错性的系统。 之上,可以方便地编写分布式、低延 特性 高并发 高容错性 函数式编程 可扩展 基础 →
基础 安装,基本类型和基本操作。 目录 安装 安装 交互模式 基本类型 整数类型 浮点类型 布尔类型 原子类型 字符串 基本操作 算术运算 布尔运算 比较 字符串插值 字符串拼接 安装 安装 各个 的安装说明可以在 网站上 部分找到。 安装后你可以很轻松的确认所安装的版本。 % elixir -v Erlang/OTP 20 [erts-9.0] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false] [dtrace] Elixir 1.5.1 交互模式 自带了 iex 这样一个交互 可以让我们随时计算 表达式的值。
运行 iex 命令,让我们开始教程: Erlang/OTP 20 [erts-9.0] [source] [64-bit] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false] [dtrace] Interactive Elixir (1.5.1) - press Ctrl+C to exit (type h() ENTER for help) iex> 让我们继续输入几个简单的表达式试试: iex> 2+3 5 iex> 2+3 == 5 true iex> String.length("The quick brown fox jumps over the lazy dog") 43 如果你现在还无法理解所有的表达式,请不要担心,不过我们希望你能有所体会。 基本类型 整数类型 iex> 255 255 语言本身就支持二进制、八进制和十六进制的整数: iex> 0b0110 6 iex> 0o644 420 iex> 0x1F 31 浮点类型 在 e 表示的科学计数: 语言中,浮点数要求小数点之前必须有至少一个数字;支持 位多精度和 iex> 3.14 3.14 iex> .14
** (SyntaxError) iex:2: syntax error before: '.' iex> 1.0e-10 1.0e-10 布尔类型 支持 true 和 false 两种布尔值,除了 false 和 nil 之外所有的值都为 真。 iex> true true iex> false false 原子类型 原子类型是名字和代表的值相同的常量,如果你熟悉 ,它们和符号类型同义。 iex> :foo :foo iex> :foo == :bar false 注意:布尔值 true 和 false 实际上就是对应的原子 :true 和 :false iex> true |> is_atom true iex> :true |> is_boolean true iex> :true === true true 模块的名字也是原子,即使实际上还不存在这个模块, MyApp.MyModule 是一个 合法的原子名称。 iex> is_atom(MyApp.MyModule) true 原子也可以用来直接引用 标准库的模块,包括内置的模块。 iex> :crypto.strong_rand_bytes 3 <<23, 104, 108>>
字符串 的字符串是 编码的,用双引号包住: iex> "Hello" "Hello" iex> "dziękuję" "dziękuję" 字符串支持换行符和转义字符: iex> "foo ...> bar" "foo\nbar" iex> "foo\nbar" "foo\nbar" 还包含很多复杂的数据类型。当我们学到集合和函数的时候我们会学到更多关于 支持基本的 + 、 - 、 * 、 / 操作符,不过要注意 / 的结果是浮 这方面的知识。 基本操作 算术运算 如你所想, 点数。 iex> 2 + 2 4 iex> 2 - 1 1 iex> 2 * 5 10 iex> 10 / 5 2.0 如果你需要整数除法和求余, 提供了两个函数: iex> div(10, 5) 2 iex> rem(10, 3) 1
布尔运算 提供了 || 、 && 和 ! 布尔操作符,它们支持任何类型的操作: iex> -20 || true -20 iex> false || 42 42 iex> 42 && true true iex> 42 && nil nil iex> !42 false iex> !false true 还有三个操作符( and 、 or 、 not ),它们的第一个参数 必须 是布尔类型 ( true 和 false ) iex> true and 42 42 iex> false or true true iex> not false true iex> 42 and true ** (ArgumentError) argument error: 42 iex> not 42 ** (ArgumentError) argument error 比较 有我们习惯的一切比较运算符 : == != === !== <= >= < 和 > 。 iex> 1 > 2 false iex> 1 != 2 true iex> 2 == 2 true iex> 2 <= 3 true 对于整数和浮点数的严格比较,可以使用 === :
iex> 2 == 2.0 true iex> 2 === 2.0 false 有一个很重要的特性,那就是任意两个类型之间都可以进行比较,这在排序的时 候非常有用。我们没有必要去记住比较的优先级,但是知道了也没坏处 : number < atom < reference < function < port < pid < tuple < map < list < bitstring 这个特性可以导致一些非常有趣但是完全合法,而且在其他语言中很难看到的比较 : iex> :hello > 999 true iex> {:hello, :world} > [1, 2, 3] false 字符串插值 如果你使用过 ,那么 的字符串插值看起来会很熟悉: iex> name = "Sean" iex> "Hello #{name}" "Hello Sean" 字符串拼接 使用 <> 操作符进行字符串拼接: iex> name = "Sean" iex> "Hello " <> name "Hello Sean" ← 集合 →
集合 列表、元组、关键字列表( ( ) )、图( )、字典和函数组合子 目录 列表 列表拼接 列表减法 头 尾 元组 关键字列表 图 列表 列表是值的简单集合,可以包含不同的数据类型,而且可能包含相同的值。 iex> [3.14, :pie, "Apple"] [3.14, :pie, "Apple"] 内部用链表实现列表,这表明获取列表长度是 O(n) 的操作。同样的原因,在头 部插入比在尾部插入要快。 iex> list = [3.14, :pie, "Apple"] [3.14, :pie, "Apple"] iex> ["π"] ++ list ["π", 3.14, :pie, "Apple"] iex> list ++ ["Cherry"] [3.14, :pie, "Apple", "Cherry"] 列表拼接 列表拼接使用 ++/2 操作符: iex> [1, 2] ++ [3, 4, 1] [1, 2, 3, 4, 1] 关于上面使用到的 ++/2 格式的说明:在 中(以及 的基础语言 ),
分享到:
收藏