F#:双重回退的值名称与函数名称冲突?

时间:2017-04-22 06:47:15

标签: f# backticks

在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但这里有类型字符串")

第二个功能很好,没问题。

这是设计吗?

1 个答案:

答案 0 :(得分:5)

原因是,你的参数和最后的调用是一回事。双重反引号用于逃避名称,它们不是名称的一部分

所以在你的情况下,这意味着``string``string完全相同,你试图管道进入你的字符串参数。是的,这完全是设计的。

C#等效词是@ -escaped名称,例如@hellohello会发生冲突。