在Elixir记录中使用方括号语法

jsvisa

我正在学习Elixir lang入门的Elixir编程,而且我堆满了record brace syntax

这是示例:

defrecord FileInfo, atime: nil, accesses: 0
defmodule FileAccess do
  def was_accessed?(FileInfo[accesses: 0]), do: false
  def was_accessed?(FileInfo[]),            do: true
end

尽管作者认为Elixir在编译时会将记录扩展到元组。所以

def was_accessed?(FileInfo[accesses: 0]), do: false

是相同的:

def was_accessed?({ FileInfo, _, 0 }), do: false

但是当我输入Elixir shell时:

iex(13)> FileInfo[access: 0] == {FileInfo, nil, 0}
true
iex(14)> FileInfo[access: 0] == {FileInfo, 0, 2}
false

结果FileInfo[access: 0] 等于{FileInfo, nil, 0}

{ FileInfo, _, 0 }

这两个场景有什么区别?

何塞·瓦里姆

很好的问题!

不同之处在于上下文。在第一个示例中,Elixir知道FileInfo[]在函数签名内(特别是在match上下文内)被调用,因此,它不使用默认值,而是将所有非给定值扩展为_

在另一个示例中,我们不在匹配上下文中,而只是常规上下文。在这种情况下,_甚至是无效的:

iex> _
** (CompileError) iex:1: unbound variable _

在这种情况下,Elixir会将非给定值扩展为默认值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

方括号[Type]语法在哪里记录?

来自分类Dev

在AngularJS中使用方括号

来自分类Dev

在Angular2表达式模板语法中使用两对方括号

来自分类Dev

在Angular2表达式模板语法中使用两对方括号

来自分类Dev

在方括号中使用classList方法

来自分类Dev

在PHP中使用方括号并分配变量

来自分类Dev

在PHP中使用方括号时出错

来自分类Dev

在方括号中使用“自我”

来自分类Dev

在shell脚本中使用方括号/括号与在命令行bash中使用括号/括号

来自分类Dev

如何使用苗条的语法在HTML内容中转义方括号?

来自分类Dev

在for循环C#中使用方括号与不使用方括号之间的区别

来自分类Dev

在Angular中使用方括号的目的是什么?

来自分类Dev

在此代码中使用方括号是什么意思

来自分类Dev

在json中使用方括号的目的是什么?

来自分类Dev

在Scapy中使用方括号作为数据包头

来自分类Dev

在TFDQuery“ like”模式的方括号[^]中使用帽子的问题

来自分类Dev

在Tcl中使用方括号和空格字符

来自分类Dev

我下载了Webfont,但只能在方括号中使用

来自分类Dev

在带通配符的匿名函数中使用方括号

来自分类Dev

在SQL中使用AND和方括号分组无法正常工作

来自分类Dev

sql在Like子句中使用方括号括起来?

来自分类Dev

javascript中使用方括号表示法的嵌套对象

来自分类Dev

在 MATLAB 中使用方括号进行离散时间的困难

来自分类Dev

使用双方括号?

来自分类Dev

在EBNF或GNU Bison语法中使用括号/括号

来自分类Dev

在EBNF或GNU Bison语法中使用括号/括号

来自分类Dev

语法说明:Swift中的方括号

来自分类Dev

PHP方括号语法错误

来自分类Dev

在sed中使用反向引用在数学表达式中用方括号替换括号

Related 相关文章

热门标签

归档