我是一个尝试学习C#的F#开发人员。
据我所知,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 """
但这是有规律的;
三引号字符串中的引号不能以双引号(“)结尾,但可以以1开头。
所以这是一条法律线;
let s = """"This is a valid string"""
但事实并非如此;
let s = """This is a valid string""""
为什么会这样呢?我查看了在MSDN页面上、F# 3.0语言规范$3.5字符串和字符部分和关于F# 3.0语言特性的更多信息,但是没有找到任何关于为什么在字符串开始时使用它是合法的信息,而不是在最后。
你能指点我吗?
发布于 2014-07-05 05:56:43
答案很简单:当编译器看到三个引号时,三引号字符串就会结束。因此,"""a""""
是字符a
的字符串,后面是一个额外的"
,它启动一个新的字符串。
如果要编写模糊代码,可以执行以下操作:
f"""a""""b"
使用两个字符串f
和"b"
调用函数"a"
。
https://stackoverflow.com/questions/24586857
复制相似问题