假设我有一个名为#parameters的记录,我正在从外部访问它,我不知道它里面的所有键是否都存储了一个值。假设在我的记录中有一个名为Index的键,我如何检查Index的值是否存在于我的记录中?我如何将它放入case语句中,例如:
Index = find from the record or else put it as 100.
1bqhqjot1#
我从外部访问它,并且不知道它内部的所有键是否都存储了值。记录中的所有字段都有一个值。如果记录定义中没有指定字段的默认值,则erlang使用atom undefined作为默认值。例如:
undefined
-module(a). -compile(export_all). -record(pattern, {a, b=0, c}). go() -> #pattern{a=1}.
在 shell 中,
1> c(a). a.erl:2:2: Warning: export_all flag enabled - all functions will be exported % 2| -compile(export_all). % | ^ {ok,a} 2> rr(a). [pattern] 3> a:go(). #pattern{a = 1,b = 0,c = undefined}
假设我的记录中有一个名为Index的键;我如何检查索引的值是否存在于我的记录中?同样,index键总是有一个值,下面的例子演示了如果index的值为undefined,如何做一件事,如果index的值为其他值,如何做其他事情。
index
-module(a). -compile(export_all). -record(pattern, {a, b=0, index}). go() -> Pattern1 = #pattern{a=1}, check_index(Pattern1), Pattern2 = #pattern{a=1, index=10}, check_index(Pattern2). check_index(#pattern{index=undefined}) -> io:format("index key is undefined~n"); check_index(#pattern{index=Number}) -> io:format("index key is ~w~n", [Number]).
在 shell 中:
1> c(a). a.erl:2:2: Warning: export_all flag enabled - all functions will be exported % 2| -compile(export_all). % | ^ {ok,a} 2> rr(a). [pattern] 3> a:go(). index key is undefined index key is 10 ok
您还可以将check_index()函数转换为返回true或false的布尔函数。
check_index()
1条答案
按热度按时间1bqhqjot1#
我从外部访问它,并且不知道它内部的所有键是否都存储了值。
记录中的所有字段都有一个值。如果记录定义中没有指定字段的默认值,则erlang使用atom
undefined
作为默认值。例如:在 shell 中,
假设我的记录中有一个名为Index的键;我如何检查索引的值是否存在于我的记录中?
同样,
index
键总是有一个值,下面的例子演示了如果index
的值为undefined
,如何做一件事,如果index
的值为其他值,如何做其他事情。在 shell 中:
您还可以将
check_index()
函数转换为返回true或false的布尔函数。