F# 将整数列表转换为字符串

F# 将整数列表转换为字符串,f#,F#,我正在努力实现以下目标。输入为列表[8;9;4;5;7],输出为 “8,9,4,5,7,”注意输出中的“,” 我尝试了以下方法 let rec ConvertToString list = match list with | head :: tail -> head.ToString() + ConvertToString tail | [] -> "" let op= [8;9;4;5;7] |> ConvertToString 但是我得到的输出是val

我正在努力实现以下目标。输入为列表[8;9;4;5;7],输出为 “8,9,4,5,7,”注意输出中的“,”

我尝试了以下方法

let rec ConvertToString list =
   match list with
   | head :: tail -> head.ToString() + ConvertToString tail
   | [] -> ""

let op= [8;9;4;5;7] |> ConvertToString
但是我得到的输出是val me:string=“89457”


任何人都可以建议如何获得输出中的“,”。函数应该是通用的。

您需要在头部和转换后的尾部之间添加逗号,并且需要另一个大小写来转换最后一个元素,这样您就不会添加分隔逗号

let rec ConvertToString list =
   match list with
   | [l] -> l.ToString()
   | head :: tail -> head.ToString() + "," + ConvertToString tail
   | [] -> ""
注意:您还可以使用
String.concat
定义函数:

let ConvertToString l = l |> List.map (fun i -> i.ToString()) |> String.concat ","
String.Join

let ConvertToString (l: 'a seq) = System.String.Join(",", l)
如果只允许
ConvertToString
获取
int list
参数,则可以显式指定输入参数的类型:

let ConvertToString (l : int list) = ...

另一种方法是:

let ConvertToString (l: int list) =
match l with
| [] -> ""
| h :: t -> List.fold (fun acc x -> acc + "," + x.ToString()) (h.ToString()) t

我认为这是一个很好的整数列表版本:

let convertToString = List.map (sprintf "%i") >> String.concat ","
或者,如果您想要通用版本:

let convertToString l = l |> List.map (sprintf "%A") |> String.concat ","

当前ConvertString为val ConvertToString:list:'a list->string。如何将其设置为val ConvertToString:list->string,以便它只接受整数作为列表input@user2898331更改list参数以指定类型:(list:int list)