我有以下代码:
$json = '//RETURNED JSON';
$all_files = json_decode($json);
foreach($all_files->items as $files){
echo $files->title;
echo $files->selfLink;
echo $files->mimeType;
}
它应该只输出从0到n的所有数字。需要澄清的是,我知道有一些更简单的方法可以达到相同的结果,但是我想知道为什么在这种特定情况下它不起作用。
当我使用某些参数运行此代码时,例如。 let counter n =
let rec count i =
if i > n
then ()
else
print_int i;
count (i+1)
in count 0
不会终止。
当我将代码counter 5
的最后一行更改为in count 0
时,它将输出in Thread.create count 0
有人可以解释这种行为吗?
编辑
还发现,如果您将代码修改为此:
012345
它工作正常。为什么会这样?
答案 0 :(得分:3)
您的缩进有误导性;您的代码可以
if i > n then () else print_int i;
首先然后
count (i+1)
当然它不会终止!你想要的是
else begin
print_int i;
count (i+1)
end
(或else ( ... )
)。参见例如https://ocaml.org/learn/tutorials/if_statements_loops_and_recursion.html中的“使用开始...结束”。