在Rails中,您可以执行以下操作:
@user.try(:contact_info).try(:phone_number)
phone_number如果@user并且contact_info都不是零,那将返回.如果其中一个为零,则表达式将返回nil.
我想知道在Elixir中最常用的方法是什么,知道@user并且contact_info是结构.
我认为一种方法是使用模式匹配,所以它会是这样的:
case user do
%{contact_info: %{phone_number: phone_number}} when phone_number != nil ->
#do something when the phone number is present
_ ->
#do something when the phone number is absent
end
Run Code Online (Sandbox Code Playgroud)
可能不会,Elixir 不是面向对象的,因此您在定义的模块上调用已知函数(如果未定义函数/模块,则代码甚至无法编译)。
对于使用管道运算符连续调用函数(结果可以nil在任何步骤),我认为单个大块try就足够了。或者您可以尝试pipe_while此库中的宏https://github.com/batate/elixir-pipes
| 归档时间: |
|
| 查看次数: |
891 次 |
| 最近记录: |