我正在努力实现以下目标.输入是列表[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
Run Code Online (Sandbox Code Playgroud)
但我得到的输出是val me:string ="89457"
任何人都可以建议如何在输出中获得",".该功能应该是通用的.
您需要在头部和转换后的尾部之间添加逗号,并且需要另一个案例来转换最后一个元素,因此您不需要添加分隔逗号.
let rec ConvertToString list =
match list with
| [l] -> l.ToString()
| head :: tail -> head.ToString() + "," + ConvertToString tail
| [] -> ""
Run Code Online (Sandbox Code Playgroud)
请注意,您还可以使用String.concat以下方法定义函数
let ConvertToString l = l |> List.map (fun i -> i.ToString()) |> String.concat ","
Run Code Online (Sandbox Code Playgroud)
或者String.Join:
let ConvertToString (l: 'a seq) = System.String.Join(",", l)
Run Code Online (Sandbox Code Playgroud)
如果您只想允许ConvertToString接受int list参数,则可以显式指定输入参数的类型:
let ConvertToString (l : int list) = ...
Run Code Online (Sandbox Code Playgroud)