我在教自己F#我通常是C#程序员。
我正在尝试使用(**)
为自己做笔记,因为我会查看这些章节,但我从评论本身收到错误。
module Characters
let vowels = ['a', 'e', 'i', 'o', 'u']
printfn "Hex u0061 = '%c'" '\u0061'
(* <------------Error is here, is 'End of file in string embedded in comment begun at or before here'
Character Escape Sequences
Character Meaning
-------------------------------
\' Single Quote
\" Double Quote
\\ Backslash
\b Backspace
\n Newline
\r Carriage Return
\t Horisontal Tab
*)
这是否将评论视为字符串,这意味着我必须逃避我的评论?
答案 0 :(得分:12)
所以这些是有效的块注释:
(* "embedded string, this --> *) doesn't close the comment" *)
(* (* nested *) comment *)
(* quote considered to be in char literal '"' is ok *)
但这些不是
(* "this string is not closed *)
(* " this quote --> \" is escaped inside a string *)
好像这还不够疯狂,因为(*)
之后有special treatment for operators which begin with *
,通常会将其视为块评论的开头或结尾。
(* I can talk about the operator (*) without ending my comment *)
AFAIK,这些都是从ML继承的(嵌套的注释肯定是,不确定字符串)。
因此,出于您的目的,您可能希望执行以下操作:
(* Character Meaning
-------------------------------
" \' " Single Quote
" \" " Double Quote
or
'\'' Single Quote
'"' Double Quote
*)
答案 1 :(得分:2)
似乎“双引号”行是问题所在。如果我删除该行,则错误消失。这看起来像是解析器中的一个错误,因为如果我使用//
为每一行添加前缀而不是执行块注释,则不会出现问题。我建议你把它发送到fsbugs@microsoft.com - 如果它还没有为Visual Studio 2013修复,也许还不算太晚。
完全不相关:您的vowels
列表包含一个由5个元组组成的元素。如果您希望它是一个字符列表而不是包含一个5部分元组的列表,请使用分号而不是逗号。