什么时候不在脚本中使用预编译?

when NOT to use Pre compilation in scripting?

我阅读了 Pre compilation script and when you must compile script

我想知道是否存在预编译脚本会导致脚本失败或导致错误行为的情况?或者当 运行 脚本时,预编译总是正确的方法?

是否有选项可以让脚本预编译失败但没有它也能正常工作?

任何解释将不胜感激。

我发现静态编译的 groovy disadvantages 主要缺少动态特性/动态方法调度。

我找到了一个 example 用于动态方法调度:

class Categorizer {

 void accept(String s) { println "String: '$s'" }
 void accept(Number n) { println "Number: $n" }
 void accept(Object o) { println "Object: $o" }

 void accept(Object... objects) {
    objects.each {
      accept(it)
    }
  }
}

new Categorizer().accept(
  "a",
  "${'b'}",
  1,
  true,
  ["c", "d", 2] as Object[]
)