首页 > 解决方案 > 为什么 F# 中三引号字符串中的换行符与 Environment.NewLine 不同?

问题描述

似乎 F# 中三引号字符串中的换行符在 Windows(以及 Linux)上被转换为 LF,而不是 CRLF。但是,Environment.NewLine在 Windows 上是 CRLF。

在 Windows 上:

let tripleQuotedString = """1
2
3"""
let concatenatedString = "1" + Environment.NewLine + "2" + Environment.NewLine + "3";;
printfn "%A" (Seq.toList tripleQuotedString) // yields ['1'; '\010'; '2'; '\010'; '3']
printfn "%A" (Seq.toList concatenatedString ) // yields ['1'; '\013'; '\010'; '2'; '\013'; '\010'; '3']

F# 规范中似乎没有提到这一点。这是一个深思熟虑的设计决定吗?

标签: f#

解决方案


三引号字符串的行尾与源代码文件行尾相同。


推荐阅读