Elixir 学习笔记


基础知识

Elixir Shell

返回目录

# 启动交互模式,按两次 Ctrl + C 退出
$ iex
# 在win系统下,启动 Erlang Shell
$ iex --werl 
# 启动,并运行脚本
$ iex -S 脚本名 #待验证

# 执行.exs文件。脚本 simple.exs 内容为:IO.puts "Hello world from Elixir"
$ elixir simple.exs
Hello world from Elixir #执行结果

iex -S mix run
elixirc

shell 帮助信息

返回目录

# 帮助信息
iex> h()
# h 方法名
iex> h round
# h 方法名/参数个数
iex> h round/1
# h 操作符/参数个数
iex> h ==/1

基本类型

返回目录

类型说明
1integer十进制整型
0b1010integer二进制整型
0o777integer八进制整型
0x1Finteger十六进制整型
1.0float浮点型
1.0e-10float科学计数法表示浮点型
trueboolean布尔型,真
falseboolean布尔型,假
:atomatom/symbol原子
“elixir”string字符串
[1,2,3]list列表
[1,2,3]tuple元组

基本运算符

返回目录

运算符说明示例
+1+2 //3
-2-1 //1
*2*3 //6
/10/2 //5.0
div整除div(10, 2) //5
div 10, 2 //5
rem取余rem 10, 3 //1

基本方法

返回目录

方法说明示例
round/1四舍五入取整round(3.58) //4
trunc/1向下取整trunc(3.58) //3
is_boolean/1是否布尔型is_boolean(1) //false
is_integer/1是否整型is_integer(1) //true
is_float/1是否浮点型is_float(2.4) //true
is_number/1是否数字is_number(1.2) //true
is_atom/1是否原子is_atom(:word) //true
is_binary/1是否二进制is_binary(“H”) //true
is_function/1是否函数is_function(round) //true
is_function/2是否函数,并检查参数个数is_function(round, 2) //false

数据类型

atom 原子

返回目录

原子就是字面符号常量

iex> :hello #原子
iex> Hello #原子

布尔值 true 和 false 也是原子

iex> true == :true #true
iex> is_atom(false) #true
iex> is_boolean(:false) #true

string 字符串

返回目录

用双引号标识字符串,使用 UTF-8 编码

iex> "hello world" #"hello world"
# 原子 插入字符串
iex> "hello #{:world}" #"hello world"
# 换行
iex> "hello
...> world" #"hello\nworld"
iex> "hello\nworld" #"hello\nworld"
# 打印
iex> IO.puts "hello\nworld" #hello
							#world
# 字符串的内部使用的二进制表示的
iex> is_binary("hello") #true
# 获取字符串的字节数
iex> byte_size("hellö") #6
# 获取字符串的长度
iex> String.length("hellö") #5
# 转换成大写
iex> String.upcase("hellö") #"HELLÖ"

function 函数

返回目录

函数可以像整数和字符串一样作为参数传递给其它函数

参数个数

返回目录

# 定义函数round,其参数个数为1
iex> round/1

匿名函数

返回目录

使用 fn 和 end 组成
是闭包

# 定义匿名函数
iex> add = fn a, b -> a + b end
# 执行
iex> add.(1, 2) #3
# 立即执行的匿名函数
iex> (fn -> x = 0 end).() #返回x,即 0

list 列表

返回目录

iex> list = [1, 2, true, 3] #[1, 2, true, 3]
# 列表的长度
iex> length [1, 2, 3] #3
# 相连操作符 ++/2;相减操作符 --/2
iex> [1, 2, 3] ++ [4, 5, 6] #[1,2,3,4,5,6]
iex> [1, true, 2, false, 3, true] -- [true, false] #[1,2,3,true]
# 获取列表第一个元素
iex> hd(list) #1
# 获取列表除第一个元素外的其它元素
iex> tl(list) #[2, true, 3]
# hd [] 和 tl [] 报错

#  列表中元素都是 ASCII 码时,会直接打印出来
iex> [11, 22, 33] #'\v\f\r'
iex> [104, 101, 108, 108, 111] #'hello'
# 用 i/1 来确认列表内容
iex> i [104]
iex> i 'hello'
# 单引号 表示的是 charlists,双引号是字符串
iex> 'hello' == "hello" #false

# 列表级联的性能取决于左侧列表的长度
iex> list = [1,2,3]
# 快
iex> [0] ++ list
# 慢
iex> list ++ [4]

tuple 元组

返回目录

元组将元素连续存储在内存中。通过索引访问元组元素或获取元组大小是一种快速操作。索引从 0 开始,但是更新或添加元素是很昂贵的

iex> tuple = {:ok, "hello"} #{:ok, "hello"}
# 获取元组的长度
iex> tuple_size {:ok, "hello"} #2
# 获取元组中的元素
iex> elem(tuple, 1) #"hello"
# 插入元素,不能超出索引范围
iex> put_elem(tuple, 1, "world") #返回一个新元组,不改变源值
{:ok, "world"}

IO

返回目录

命令说明示例
IO.puts输出字符串IO.puts “Hello world!”

File

返回目录

iex> File.read("path/to/existing/file")
{:ok, "... contents ..."}
iex> File.read("path/to/unknown/file")
{:error, :enoent}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值