在JavaScript中,您可以联接字符串数组,例如:
fruits = ["orange", "apple", "banana"];
joined = fruits.join(", ");
console.log(joined)
// "orange, apple, banana"
在ReasonML中如何做到这一点?
发布于 2018-04-26 19:09:36
您可以使用Js.Array.joinWith
let fruits = [|"orange", "apple", "banana"|];
let joined = Js.Array.joinWith(", ", fruits);
Js.log(joined);
// "orange, apple, banana"
发布于 2018-05-23 22:12:10
将数组转换为连接值的字符串听起来像是Array.fold_left的作业,但是运行
Array.fold_left((a, b) => a ++ "," ++ b, "", fruits);
生产",橙子,苹果,香蕉“。
理想情况下,fold的起始值(第二个参数)应该是数组中的第一个元素,而实际使用的数组应该是其余的元素,这就避免了首个逗号。不幸的是,这在数组中是不容易做到的,但是在列表中是可以做到的:
let fruitList = Array.to_list(fruits);
let joined = List.fold_left((a, b) => a ++ "," ++ b, List.hd(fruitList), List.tl(fruitList));
/*joined = "orange,apple,banana"*/
发布于 2018-07-03 14:15:21
下面是如何在ReasonML中实现您自己的join
函数:
let rec join = (char: string, list: list(string)): string => {
switch(list) {
| [] => raise(Failure("Passed an empty list"))
| [tail] => tail
| [head, ...tail] => head ++ char ++ join(char, tail)
};
};
这样,Js.log(join("$", ["a", "b", "c"]))
就给了你"a$b$c"
,就像JavaScript一样。
https://stackoverflow.com/questions/49944067
复制相似问题