Ocaml 有没有可能让一个变量在一个then或else之后呢?

Ocaml 有没有可能让一个变量在一个then或else之后呢?,ocaml,Ocaml,我想做这样一件事: 如果is_approxity(leo,bob)=true,那么让list_1=在list_1中创建_player(list_1)或者list_1 尝试此操作时,出现错误:警告10:此表达式应具有类型单位。 请注意,函数create_player(list_1)将一个元素添加到list_1 let list1 = … in … let list2 = if is_proximity(leo,bob) then create_player(list_1) else list_1

我想做这样一件事:
如果is_approxity(leo,bob)=true,那么让list_1=在list_1中创建_player(list_1)或者list_1

尝试此操作时,出现错误:
警告10:此表达式应具有类型单位。


请注意,函数create_player(list_1)将一个元素添加到list_1

let list1 = … in
…
let list2 = if is_proximity(leo,bob) then create_player(list_1) else list_1 in
…;;
这个怎么样

let list_1 =
  if is_proximity leo bob then
    create_player list_1  (* Or, something like (new_player () :: list_1)? *)
  else
    list_1
in ...

您看到的警告指出表达式的类型是某种类型的列表,而不是单位类型。如果在此之后要使用
list_1
,可以使用
let。。。在…
或全局
let

中,您的
let..in
缺少
in
部分中绑定有效的表达式。当条件为false时,您希望
列表1
的值是什么?已更新,sepp2k,相同value@FrinkL“相同的价值”是什么意思?与什么相同的值?您可以,但在这种情况下,您似乎不需要
ref
s。相反,您应该重新构造代码,这样就不需要对现有变量进行变异。因此
create\u player
应该只返回已创建的播放器,然后创建播放器列表的代码将调用
create\u player
并将结果放入列表中。