这是我的代码:
-record(user,{id,name,group,age}).
adult_section(U=#user{}) when U#user.age >=18 -> "allowed";
adult_section(_) -> "no permission".
Run Code Online (Sandbox Code Playgroud)
它可以用于:
>records_new:adult_section(#user{id=1,name='Ray',group=admin,age=10}).
output: "no permission"
Run Code Online (Sandbox Code Playgroud)
但是当我尝试这个:
> records_new:adult_section(#user{}).
"allowed"
Run Code Online (Sandbox Code Playgroud)
我没有按照第二顺序给用户的年龄,为什么它可以工作,为什么不工作"no permission".
由于您的记录没有默认值age,如果您创建记录而未指定值age,则默认为原子undefined.
1> #user{}.
#user{id = undefined,name = undefined,group = undefined,
age = undefined}
Run Code Online (Sandbox Code Playgroud)
在Erlang中,原子比大于整数:
2> undefined > 18.
true
3> foo > 100000000.
true
Run Code Online (Sandbox Code Playgroud)
如果您指定age的默认值,例如0,您的函数按预期工作:
-record(user,{id,name,group,age = 0}).
Run Code Online (Sandbox Code Playgroud)
1> #user{}.
#user{id = undefined,name = undefined,group = undefined,
age = 0}
2> a:adult_section(#user{}).
"no permission"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |