我是一名C#开发者,正在尝试学习F#。
据我所知,F# 2.0有两种字符串语法:普通字符串和逐字字符串(C#中的用法)。随着F# 3.0版本的推出,增加了一个名为“三引号字符串”的功能。
据我观察,使用这种字符串格式,位于"""之间的所有内容都是逐字字符串文字。而且不需要转义双引号等转义序列字符。
例如,下面所有字符串都是有效的:
但这不是;
为什么呢?我查看了{{link1:MSDN页面上的
你能为我解释一下吗?
据我所知,F# 2.0有两种字符串语法:普通字符串和逐字字符串(C#中的用法)。随着F# 3.0版本的推出,增加了一个名为“三引号字符串”的功能。
据我观察,使用这种字符串格式,位于"""之间的所有内容都是逐字字符串文字。而且不需要转义双引号等转义序列字符。
例如,下面所有字符串都是有效的:
let a = """ This is a valid "string" """
let b = """ This is a valid \string """
let c = """ This is a valid 'string """
但是它有一个规则;
三引号字符串中的引号不能以双引号(“)结尾,但可以以其开始。
所以这是一个合法的字符串;
let s = """"This is a valid string"""
但这不是;
let s = """This is a valid string""""
为什么呢?我查看了{{link1:MSDN页面上的
Strings (F#)
}},{{link2:F# 3.0语言规范$3.5字符串和字符部分}}和{{link3:更多关于F# 3.0语言特性的信息}},但我没有找到任何关于为什么可以在字符串开头使用它而不能在结尾使用它的信息。你能为我解释一下吗?
"
后加一个空格。 - leppie