编程范型 | 多范式:函数式、并行式、面向进程、同像性 |
---|---|
发行时间 | 2012年,13年前(2012) |
当前版本 |
![]() |
型態系統 | 动态类型、强类型 |
許可證 | Apache License |
文件扩展名 | .ex、.exs |
網站 | elixir-lang |
受影响于 | |
Clojure、Erlang、Ruby |
Elixir是一个基于Erlang虚拟机的函数式、面向并行的通用编程语言。Elixir以Erlang为基础,支持分布式、高容错、实时应用程序的开发,亦可通过宏实现元编程对其进行扩展,并通过协议支持多态。[2]
José Valim是Elixir语言的设计者。他创造该语言的目标是在维持与现有Erlang工具链及生态环境兼容性的同时,让人们可以在Erlang虚拟机上进行扩展性更好的、高生产率的开发。[3]
以下示例可以在iex shell中运行或保存在文件中,并通过命令行键入命令运行elixir<filename>
.
经典的Hello world 例子:
iex>IO.puts("Hello World!")Hello World!
Enumerable 推导
iex>forn<-[1,2,3,4,5],rem(n,2)==1,do:n*n[1, 9, 25]
模式匹配(解构)
iex>[1,a]=[1,2]iex>a2iex>{:ok,[hello:a]}={:ok,[hello:"world"]}iex>a"world"
模式匹配(多子句)
iex>caseFile.read("path/to/file")doiex>{:ok,contents}->IO.puts("found file:#{contents}")iex>{:error,reason}->IO.puts("missing file:#{reason}")iex>end
管道操作符
iex>"1"|>String.to_integer()|>Kernel.*(2)2
模块
defmoduleFundodeffib(0),do:0deffib(1),do:1deffib(n),do:fib(n-2)+fib(n-1)end
顺序产生1000个进程
fornum<-1..1000,do:spawnfn->IO.puts("#{num*2}")end
执行异步任务
task=Task.asyncfn->perform_complex_action()endother_time_consuming_action()Task.awaittask