elem(tuple, 1)
iex(77)> tuple = {:ok, "nihao"}
{:ok, "nihao"}
iex(78)> elem(tuple,1) # 获取1位上的值
"nihao"
iex(79)> elem(tuple,0) # 获取0位上的值
:ok
iex(80)> put_elem(tuple, 1, "wode") # 更新1位的值
{:ok, "wode"}
iex(81)> put_elem(tuple, 2, "1") # 更新不存在位的值,错误提示超出范围
** (ArgumentError) errors were found at the given arguments:
* 1st argument: out of range
:erlang.setelement(3, {:ok, "nihao"}, "1")
iex(81)>
List 采用的是链式存储的方式,意思是每个元素需要保存自己本身的值和指向下一个元素的指针;这种存储方式意味着如果想要读取list的长度,或是向list增加元素,必须将整个list找到,才能进行操作;头部追加元素,速度很快,尾部追加元素,与元素的多少相关;
Tuple采用的是连续性存储方式,这种存储方式访问元素非常快,但是更新或是修改元素,内存开销很大。