【发布时间】:2017-05-26 12:39:16
【问题描述】:
如何从 int 列表中获取 number(int)?
示例:我有 int l=[1;2;3;4;5] 的列表,我想获取编号 n=54321。
这是我的代码:
let rec number ls =
match ls with
|[]->[]
|(h::t)->h*10**(List.length t) + number t
;;
当我编译它时,我得到这个错误:
错误:此表达式的类型为 int,但预期的表达式为 类型 浮动
【问题讨论】:
-
** 只对浮点数起作用。( ** ) : float -> float -> float =
. -
你可以考虑使用
List.fold_right:List.fold_right (fun x acc -> x + acc * 10) [1; 2; 3; 4; 5] 0。 -
@dkim 谢谢伙计,这解决了我的问题! :)
-
或 fold_left tail-rec 版本:List.fold_left (fun (acc,pow) x -> (x * pow + acc), pow*10) (0,1) [1;2 ;3;4;5] |> fst;;