在Visual Studio 2015中:
if ((valread = read( sd , buffer, sizeof buffer)) == 0)
第一个函数生成编译器错误,let myFunction (``string`` : string) =
"\"Quoted string\"" |> (Regex "\"[^\"]*\"").Match |> string
let myOtherFunction (str : string) =
"\"Quoted string\"" |> (Regex "\"[^\"]*\"").Match |> string
函数以红色下划线。 ("此表达式预计会有类型匹配 - >>' a但这里有类型字符串")
第二个功能很好,没问题。
这是设计吗?
答案 0 :(得分:5)
原因是,你的参数和最后的调用是一回事。双重反引号用于逃避名称,它们不是名称的一部分。
所以在你的情况下,这意味着``string``
和string
完全相同,你试图管道进入你的字符串参数。是的,这完全是设计的。
C#等效词是@ -escaped名称,例如@hello
和hello
会发生冲突。