核心:
匹配
=号是匹配.表示左边和右边互相匹配值.
<- 匹配,但匹配失败时,不会报错,而是返回nil值.
不可变
所有值,一旦创建就不可再改变.
基础
- 整数: 任意大小的整数
- 浮点数
-
原子: 全局唯一名称
- 区间Range: start..end
-
正则表达式: 可用~r/../ 或其他~r{..} 等sigil包裹. 在Regex模块中.
- PID和端口: 进程ID.端口表示可读写的资源引用.self表示自身进程.
- 引用.全局唯一引用.
复合数据类型:
- 元组: 用
{}包围.值的集合. - 列表: 与lisp列表相同,用
[...]包围- 关键字列表: 和映射相同,但写为由
[]包裹.默认会转成[{},{}]形式.
- 关键字列表: 和映射相同,但写为由
- 映射: 如ruby的哈希表,由
%{k => v, k => v}形式写成.键可是任何类型. -
二进制: 用
<< ... >>包裹的值列表 - Date和Time:分别由
~D[...]和~T[...]表示.- NaiveDateTime: 纯由
Date和Time组成,由~N[...]表示
- NaiveDateTime: 纯由
运算符
+, -, *, /,div,rem整除和取余.
and, &&, or, ||, not, !
===, ==, !==, !=, >, <, >=, <=
<> 二进制连结
++,-- 列表连结和取不同
in 判断值是否在可枚举类型中
^ 针操作符:使用匹配的值.
作用域
基于语法的作用域.
with函数可自定局部变量
IEx
通过h IEx可查看其帮助文档.
当模块中的导出包含注解@doc false,@impl true时,iex不会自动完成.
–werl 可在windows启用自动完成
IEx会对自动判断表达式的边界,对表达式求值,如果表达式需要多行来表示,可使用()来包裹.
退出方式:
- 通过BREAK菜单(Ctrl-C)按下q,回车
- 按下Ctrl-C,Ctrl-C
- 按下Ctrl-\
可使用pry给Elixir代码下断点.这颗让开发者在给定函数内执行IEx会话.
def my_fun(arg1, args) do
require IEx; IEx.pry()
...
end
IEx在启动时会加载.iex.exs文件.
函数
匿名函数
Phoenix Framework
-
获取Phoenix框架:
mix archive.install hex phx_newmix是管理任务的工具,如果想查找相关任务帮助,可通过类似mix help --search "phx"找到. -
创建新Phoenix项目.
mix phx.new demo --live -
获取项目的依赖项,以进行编译或运行
cd demo && mix deps.get -
为网页资源获取依赖
cd asset && npm install && node node_modules/webpack/bin/webpack.js --mode development -
配置项目数据库
mix ecto.create -
启动Phoenix应用.
mix phx.server或iex -S mix phx.server启动中,如果报错: `inotify-tools` is needed to run `file_system` ,可通过
sudo apt install inotify-tools安装. -
打开
localhost:4000可查看结果.