Jer*_*dge 7 delphi comments escaping
我正在为我的Delphi代码添加注释以获取文档.我想要记录的一件事是JSON结构,所以我试图将样本JSON数据注释到代码中.但是,JSON广泛使用了波浪形括号{ },巧合的是它也用于Delphi中的注释.
因此,我无法找到添加这些注释的方法.通常用于我使用的文档注释块{ },例如:
{
This unit does this and that.
Use TSomeComponent to do bla bla
}
Run Code Online (Sandbox Code Playgroud)
当我尝试记录JSON数据时,结束括号}结束注释 - 即使该行以单行注释为前缀//,所以即使这样也不起作用:
{
This is how the JSON structure looks:
// {
// "some_string": "value",
// "some_object": {
// "something": 123
// }, //<-- Compiler detects this comma
// "something_else": "some other string"
// }
}
Run Code Online (Sandbox Code Playgroud)
只要有一个结束括号},注释行就会被取消注释,即使它的前缀是两个斜杠.所以Delphi在这个括号之后拿起逗号.所以最后,我无法弄清楚我可以在代码中记录JSON样本的任何方式.
我甚至尝试使用(* *)JSON块,但仍然没有运气.
有什么方法可以解决这个问题,还是我坚持下去?
Jer*_*dge 13
我在输入这个问题时发现了解决方案,所以现在我正在回答问答风格...
当评论块首次开始时,就像上面问题中的代码一样,它以一个左括号开头{.因此,编译器迫切希望找到一个结束括号,即使该结束括号位于另一个注释代码行中.但是,如果此注释块中的每一行都以两个斜杠//而不是左括号开头{,则编译器将不会查找结束括号}.因此,不是上面问题中的代码,而是应该如何编写代码:
// This is how the JSON structure looks:
//
// {
// "some_string": "value",
// "some_object": {
// "something": 123
// },
// "something_else": "some other string"
// }
Run Code Online (Sandbox Code Playgroud)
因此,只要您不使用左括号启动注释块,编译器就会在找到结束括号时尝试结束注释块.
此外,使用(* *)应该工作正常,只要你已经使用后不使用它{.使用(*和封闭整个块,*)编译器将忽略任何{或}内部,如下所示:
(*
This is how the JSON structure looks:
{
"some_string": "value",
"some_object": {
"something": 123
},
"something_else": "some other string"
}
*)
Run Code Online (Sandbox Code Playgroud)
从本质上讲,从你开始发表评论的那一刻起,无论是//,{或者(*,它都会忽略任何其他类型评论的进一步开放 - 它只会寻找自己评论类型的结尾.因此,//将寻找行的结束,{将寻找},(*并将寻找*).