用于'的F#编译器指令;未定义符号';

用于'的F#编译器指令;未定义符号';,f#,F#,有没有办法指定在F##if指令中不应定义符号?大概是这样的: #if not COMPILED // do script stuff here #endif 尽管以上是一个语法错误。同样的事情也可以通过 #if COMPILED #else // do script stuff here #endif 但我想知道有没有更整洁的方法 (编辑:我问的是一般情况,而不是编译/脚本的特殊情况。很抱歉,我从一开始就忘了提到这一点。)我想颠倒符号的语义 #if SCRIPT // do scri

有没有办法指定在F#
#if
指令中不应定义符号?大概是这样的:

#if not COMPILED
// do script stuff here
#endif
尽管以上是一个语法错误。同样的事情也可以通过

#if COMPILED
#else
// do script stuff here
#endif
但我想知道有没有更整洁的方法


(编辑:我问的是一般情况,而不是编译/脚本的特殊情况。很抱歉,我从一开始就忘了提到这一点。)

我想颠倒符号的语义

#if SCRIPT
    // do script stuff here
#endif

不,没有更整洁的方法,根据

对于那些遇到这个问题的人来说,搜索运行交互模式与编译可执行文件:

#if INTERACTIVE
#r "YOUR_REFERENCE_HERE.dll"
#endif

//your code here ...  

#if INTERACTIVE
#else
[<EntryPoint>]
#endif
let main args  =
  //you code here ... 
  0 

#if INTERACTIVE
main null |> ignore
#endif
#如果是交互式的
#r“你的参考文件在这里.dll”
#恩迪夫
//你的代码在这里。。。
#如果互动
#否则
[]
#恩迪夫
让主参数=
//你在这里编码。。。
0
#如果互动
主null |>忽略
#恩迪夫

对您或OP没有冒犯之意,但很明显,否定符号的语义会导致更整洁的代码。(通过避免
#else
hack。)@chaospinion我同意,如果可能的话,即符号没有与代码中其他地方的原始语义一起使用。@Robert-是的,这是一个不幸的警告,但可以通过定义一个新符号来避免,如
未编译
@chaospinion-您可以,但我想我宁愿和“如果/否则”呆在一起。这很快就会变得一团糟。:)对于两个用户定义的符号,例如DEMO和NOTDEMO,有4种可能的情况,其中两种是不正确的。如果只使用一个符号、DEMO和空的#If,则不可能错误地创建不正确的大小写。所以,我不会定义像NOTCOMPILED这样的东西。