美文网首页
Elixir常规编程

Elixir常规编程

作者: 风声233 | 来源:发表于2018-08-16 18:26 被阅读7次

    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
    

    散列字典

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

    • 需要将多个条目对应同一个键么?
      如果是,那么需要使用 Keyword 模块。
    • 需要保证元素的次序么?
      如果还是,则选择 Keyword 模块。
    • 需要对内容进行模式匹配么?
      如果是则使用散列表。
    • 需要存储数百个条目么?
      如果是,使用 HashDict。

    相关文章

      网友评论

          本文标题:Elixir常规编程

          本文链接:https://www.haomeiwen.com/subject/rosobftx.html