将整数列表转换为字符串

use*_*331 3 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
Run Code Online (Sandbox Code Playgroud)

但我得到的输出是val me:string ="89457"

任何人都可以建议如何在输出中获得",".该功能应该是通用的.

Lee*_*Lee 7

您需要在头部和转换后的尾部之间添加逗号,并且需要另一个案例来转换最后一个元素,因此您不需要添加分隔逗号.

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)