tit*_*tus 4 erlang list-comprehension variable-assignment
我正在测试一个带有两个不等式的表达式,用于列表理解的条件.有没有办法在这里进行分配,而不是重复那个表达式?(以下代码不起作用,但我希望如此)
诊断(专长,PatientSymptoms) - >
Run Code Online (Sandbox Code Playgroud){[CertainDisease|| {CertainDisease,KnownSymptoms}<-Expertise, C=length(PatientSymptoms)-length(PatientSymptoms--KnownSymptoms), C>=2, C<=5 ]}.
rvi*_*ing 12
直接编写它的fun方法是使用begin ... end以布尔测试结尾的块:
[ CertainDisease || {CertainDisease,KnownSymptoms} <- Expertise,
begin
C = length(PatientSymptoms) - length(PatientSymptoms -- KnownSymptoms),
C >= 2 andalso C <= 5
end ]
Run Code Online (Sandbox Code Playgroud)
定义过滤功能; 这样,每个元素调用一次,从而消除了重复计算C:
Filter = fun({CertainDisease, KnownSymptoms}) ->
C = length(PatientSymptoms) - length(PatientSymptoms--KnownSymptoms),
C >= 2 andalso C <= 5
end
Run Code Online (Sandbox Code Playgroud)
并在列表理解中使用它,如下所示:
[CertainDisease ||
{CertainDisease,KnownSymptoms} <- Expertise,
Filter({CertainDisease, KnownSymptoms})
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1423 次 |
| 最近记录: |