【发布时间】:2016-10-28 21:04:35
【问题描述】:
我知道如何列出清单:
let f n =
let out_listA = [ 0 .. (n - 1) ]
let out_list =
out_listA |> List.reduce (fun state item -> state + ", " + item)
out_list
我正在处理在线练习,其中涉及打印类似以下内容的内容 if n = 5。
[0, 1, 2, 3, 4, 5]
而不是
[0; 1; 2; 3; 4; 5]
从网上看,逗号分隔的输出似乎是一个转换为字符串的列表。
所以,我的问题是[0, 1, 2, 3, 4, 5] 代表什么,以及从分号分隔的列表转换为逗号分隔时实际发生的情况?
结语:
Fyodor Soikin 的评论是正确的;我很困惑。
事实证明,逗号分隔的列表是一种将分号分隔的列表打印为数组括号内的逗号分隔列表的发明。
以下解决方案来自github上的ehotinger:
open System
[<EntryPoint>]
let main argv =
let s = Console.ReadLine() |> int
seq { for i in 1..s do yield i }
|> Seq.fold (fun s i ->
if s = "" then sprintf "%i" i
else sprintf "%s, %i" s i) ""
|> (fun s -> sprintf "[%s]" s)
|> Console.WriteLine
0 // return an integer exit code
我以为列表已经转换了。好吧,它已被转换为包含方括号和括号内的逗号分隔的数字列表的字符串。
【问题讨论】:
-
你没有回答你自己的问题吗? 所以,我的问题是 [0, 1, 2, 3, 4, 5] 代表什么 从网上看,逗号分隔的输出似乎是一个转换为字符串。
-
@Sehnsucht 除了它没有将列表转换为字符串。我正要解释,但 Rob 打败了我,所以请看下面他的回答。
-
@Kittoes0124 查看我对他的回答的评论
-
@Sehnsucht 我误解了问题集是什么。