导图社区 elixir编程语言基础
这是一篇关于elixir基础思维导图,包含基本类型、 基本操作、 集合、enum等。希望此脑图对你有所帮助!
以思维导图的形式,详细概述了一系列与软件开发和面试相关的常见问题和概念。覆盖了从基础知识(如自动装配、数据库操作)到高级概念(如微服务架构、并发控制)的广泛内容,旨在帮助面试者准备面试并深入理解相关技术领域。
spring的 基本功能,包含有 AOP、 AOP具体应用、 整合第三方bean等。
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
elixir
基本类型
整数类型
浮点类型
布尔类型
原子类型
:foo,和字符串不同,不用加引号
字符串
基本操作
算数运算
整除div(10,5)
取余rem(10,5)
布尔运算
||、&& 和 ! 布尔操作符
三个操作符(and、or、not),它们的第一个参数_必须_是布尔类型(true 和 false)
比较
==, !=, ===, !==, <=, >=, < 和 >
对于整数和浮点数的严格比较,可以使用 ===
字符串插值
#{}
iex(10)> name = "tom" "tom" iex(11)> "hello,#{name}" "hello,tom"
字符串拼接
<>
iex(12)> name = "zhangsan" "zhangsan" iex(13)> "hello"<>name "hellozhangsan"
集合
列表
形式
[3.14, :pie, "Apple"] [3.14, :pie, "Apple"]
左侧插入
["π" | list]
列表拼接(返回新值)
拼接++
列表减法(返回新值)
减法--
取出头部(第一个元素)
hd list
取出尾部(除了第一个剩下的元素)
tl list
模式匹配
| 分割头部和尾部
iex(25)> [toubu | weibu] = [1,2,3,4,5] [1, 2, 3, 4, 5] iex(26)> toubu 1 iex(27)> weibu [2, 3, 4, 5]
内部通过链表存储,类似java的set
元组
内部通过连续内存存储,类似java数组
特征
iex(29)> xiaohong = {1,2,3} {1, 2, 3}
关键字列表
键(key)都是原子(atom) 键(key)是社区的(定义后,顺序不会改变) 键(key)不一定是唯一的
iex>[foo: "bar", hello: "world"] [foo: "bar", hello: "world"] iex>[{:foo, "bar"}, {:hello, "world"}] [foo: "bar", hello: "world"]
列表的每个元素的key必须是原子类型
key和value之间用:分割
map
iex(30)> aaa=%{1=>2,3=>4} %{1 => 2, 3 => 4} iex(31)> aaa[1] 2
key和value之间用=>分割
当key是原子类型时,可以用:分隔,不用写原子类的冒号
%{foo: "bar", hello: "world"}
获取值
name.key
当key是原子类时,无需写冒号
iex(8)> name = %{aaa: "bbb"} %{aaa: "bbb"} iex(9)> name.aaa "bbb"
name[key]
更新value(返回新对象)
iex(1)> name = %{aaa: "a1"} %{aaa: "a1"} iex(2)> %{name | aaa: "a2"} %{aaa: "a2"}
添加value(返回新对象)
iex(9)> Map.put(name,:aaa,"a2") %{aaa: "a2"}
enum
列表拆分
根据数量分组
name = Enum.chunk_every([1,2,3,4,5],2) IO.inspect(name)
根据条件分组,返回值发生变化开始分组
name = Enum.chunk_by(["12","12","1234","12345","123456"],fn(x)->String.length(x) end) IO.inspect(name)
修改特定值
每间隔几个元素修改数据
name = Enum.map_every([12,12,1234,12345,123456],3,fn(x)-> x+20000 end) IO.inspect(name)
遍历
遍历列表获取boolean结果
全部符合条件
IO.puts(Enum.all?(["aaad","bbb"],fn(s)->String.length(s)==3 end))
只要有一个符合条件
IO.puts(Enum.any?(["aaad","bbb"],fn(s)->String.length(s)==3 end))
遍历不获取结果
name = Enum.each([12,12,1234,12345,123456],fn(x)-> IO.puts(x) end) IO.inspect(name)
会多返回一位 :ok
遍历返回新集合
name = Enum.map([12,12,1234,12345,123456],fn(x)-> x-1 end) IO.inspect(name)
最值
最小值
name = Enum.min([12,12,1234,12345,123456]) IO.inspect(name)
最大值
Enum.max([5, 3, 0, -1]) 5
过滤
name = Enum.filter([11,12,1234,12345,123456],fn(x) -> rem(x,2)==0 end) IO.inspect(name)
累加
Enum.reduce([1, 2, 3], fn(x, acc) -> x + acc end)
Enum.reduce(["a","b","c"], "1", fn(x,acc)-> x <> acc end)
排序
Enum.sort([5, 6, 1, 3, -1, 4])
去重
Enum.uniq([1, 2, 3, 2, 1, 1, 1, 1, 1])
自定义规则去重
Enum.uniq_by([%{x: 1, y: 1}, %{x: 2, y: 1}, %{x: 3, y: 3}], fn coord -> coord.y end)
子主题