Elixir常规编程

2018-08-16  本文已影响7人  风声233

Elixir 作为适用于并行编程的语言,它首先要适用于常规的顺序编程。
本篇文章整理了小部分个人感觉难记的 Elixir 常规编程示例。

关键字列表:

因为我们经常需要一组键值对,Elixir 提供了一个简写方式:

[name: "Dave", city: "Dallas", likes: "Programming"]

Elixir 会将其转换为一个由双值元组组成的列表:

[ {:name, "Dave"}, {:city, "Dallas"}, {:likes, "Programming"}]

当关键字列表作为函数调用的最后一个参数时,Elixir 允许去掉方括号。例如:

DB.save record, use_transaction: true, logging : "HIGH"

散列表:

%{ key => value, key => value }

如果键是原子类型,可以使用类似于关键字列表的简略写法

%{ key : value, key : value }  

为何既有散列表又有关键字列表?
散列表每个条目的键是不同的,而关键字列表允许存在重复的键。散列表更高效(尤其其条目数量不断增加时),并且可以用于 Elixir 的模式匹配。
通常我们用关键字列表来处理命令行参数和传递选项,而想获得关联数组的时候就用散列表(或另一个数据结构,HashDict)。

访问散列表:
iex> states = %{ "AL" => "Alabama", "WI" => "Wisconsin" }
%{"AL" => "Alabama", "WI" => "Wisconsin"}
iex> states["AL"]
"Alabama"
iex> states["TX"]
nil

如果键是原子,还可以用点符号:

iex> colors = %{ red: 0xff0000, green: 0x00ff00, blue: 0x0000ff}
%{blue: 255, green: 65280, red: 16711680}
iex> colors[:red]
16711680
iex> colors.green
65280

散列字典

如何在散列表、散列字典和关键字列表之间做选择:
问自己如下的问题(按顺序):

上一篇 下一篇

猜你喜欢

热点阅读