F# 将整数列表转换为字符串
我正在努力实现以下目标。输入为列表[8;9;4;5;7],输出为 “8,9,4,5,7,”注意输出中的“,” 我尝试了以下方法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
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)