我正在 Prolog 中进行一个项目,我偶然发现了一个问题:
假设我正在处理一个列表[H|T]。
function1(H,T),
check(H,T,Result),
Result= 'Yes' ->
Stuff
;
function2(H,T,NT),
Stuff2...
)
;
Stuff3.
Run Code Online (Sandbox Code Playgroud)
我的问题是,条件子句中的H和T变量似乎不可见(它们被视为新变量)。我的问题是:如何让它们可见?
按照您编写的方式(对您省略的部分做出一些假设),您的代码被解释为
( function1(H,T),
check(H,T,Result),
Result= 'Yes' ->
Stuff
;
function2(H,T,NT),
Stuff2...
)
Run Code Online (Sandbox Code Playgroud)
这将导致 function1 的效果在 function2 执行之前被撤销。也许你想要的是
function1(H,T),
check(H,T,Result),
( Result= 'Yes' ->
Stuff
;
function2(H,T,NT),
Stuff2...
)
Run Code Online (Sandbox Code Playgroud)
逗号的结合力比分号更强,因此请始终在 if-then-else 或析取语句周围使用括号,并确保它们具有正确的范围。
| 归档时间: |
|
| 查看次数: |
116 次 |
| 最近记录: |