Elixir - comprehensions

发布时间:2023-07-19 13:00

Elixir - comprehensions

第一次学习Elixir,作为一个笔记记录一下学习过程,内容中均为自己的理解,存在理解有误的地方,请指出,谢谢!

comprehension基础使用

  • 功能:允许我们快速构建一个可枚举的或是位串的数据结构。
  • 返回值:默认返回List,通过配置参数可以返回其他类型,后面会介绍
  • 基本的使用方法
    #A list generator:
    iex> for n <- [1, 2, 3, 4], do: n * 2
    [2, 4, 6, 8] 
    
    # for Bitstring
    iex> pixels = <<213, 45, 132, 64, 76, 32, 76, 0, 0, 234, 32, 15>>
    iex> for <<r::8, g::8, b::8 <- pixels>>, do: {r, g, b}
    iex> [{213, 45, 132}, {64, 76, 32}, {76, 0, 0}, {234, 32, 15}]	
    
    # A comprehension with two generators
    for x <- [1, 2], y <- [2, 3], do: x * y
    [2, 3, 4, 6]
    
    n <- [1, 2, 3, 4][1, 2], [2, 3] 都是generator, do后面是执行方法,即对可枚举元素的操作
  • 支持参数过滤,使用方法如下:
    # A comprehension with a generator and 筛选出对2求余为0的元素
    iex> for n <- [1, 2, 3, 4, 5, 6], rem(n, 2) == 0, do: n
    [2, 4, 6]
    
    # 筛选出type不等于guest的值
    iex> users = [user: "john", admin: "meg", guest: "barbara"]
    iex> for {type, name} when type != :guest <- users do
    ...>  String.upcase(name)
    ...> end
    ["JOHN", "MEG"]
    

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号