所有Groovy代码对Groovy++;?

所有Groovy代码对Groovy++;?,groovy,groovy++,Groovy,Groovy++,看了之后,我想试试Groovy++,但我有一个顾虑 Groovy的所有语法在Groovy++中都有效吗 例如,我可以在Groovy中执行此操作: def list = [1,2] 上述代码在Groovy++中有效吗?应该有效,因为在Groovy++中,您可以: 静态和动态类型代码的简单混合 参考资料:目标(我相信)是让它支持尽可能多的Groovy代码 我认为目前有几个领域不起作用,包括: 这可能会引起问题 但是您可以始终解决这些问题,或者不将需要它们的类标记为@Typed下面是代码示例

看了之后,我想试试Groovy++,但我有一个顾虑

Groovy的所有语法在Groovy++中都有效吗

例如,我可以在Groovy中执行此操作:

def list = [1,2]

上述代码在Groovy++中有效吗?

应该有效,因为在Groovy++中,您可以:

  • 静态和动态类型代码的简单混合
参考资料:

目标(我相信)是让它支持尽可能多的Groovy代码

我认为目前有几个领域不起作用,包括:

  • 这可能会引起问题

  • 但是您可以始终解决这些问题,或者不将需要它们的类标记为
    @Typed

    下面是代码示例的差异列表

    其中一些差异:

    • 更严格的编译时检查
    • 使用ExpandoMetaClass不进行即时类型修改
    • 闭包不能更改闭包代码之外的变量
    • 无法直接访问私有方法
    • 别担心。性能不是groovy和groovy++的问题。对于这两种语言,您主要编写粘合逻辑。连接各种java库的代码。这些库是用java编写的,所以它们可以全速运行

      有时您会注意到,您已经在groovy中编写了大量代码,并且希望增加一些额外的速度。没问题。Groovy非常适合构建算法的原型。由于Groovy具有类似java的语法并利用了所有这些java库,因此将原型转换为全速运行的java库是没有问题的(是的,您必须手动编写代码,但这意味着,您“只”需要从Groovy代码中删除所有这些缺点即可将其转换为java)

      b) 据我所知,groovy++通过注释工作。只有在注释代码时,它才会被识别为groovy++代码。所以它应该会起作用。但是,从所有这些答案中可以看出,目前使用groovy++的人并不多,因为性能不是问题(请参见:-)

      顺便说一句:我想groovy++fork很快就会合并到标准的groovy主干中…

      groovy++引入了@Typed(TypePolicy.MIXED)注释,它与groovy完全兼容

      通过使用@Typed(TypePolicy.DYNAMIC)或根本不使用@Typed,您将失去Groovy++的所有优势

      混合类型策略尽可能优化静态位置。

      @Typed(TypePolicy.MIXED)使希望使用groovy++优化代码的开发人员的生活更加轻松。但是,它并不完全支持groovy代码

      即使使用@Typed(TypePolicy.MIXED),groovy++代码的兼容性仍然存在问题

      e、 g.groovy样式类型转换(使用关键字“as”)

      需要改成

       String foo = (String)myUntypedFoo
      
      在闭包外部声明的变量也不能直接在这些闭包中使用:

        @Typed(TypePolicy.MIXED)
        def countMatches( List<String> bahList, String pattern ){
          int counter = 0
          bahList.each{ String bah ->
            if (bah==pattern) counter++
          }
        }
      
      @Typed(TypePolicy.MIXED)
      def countMatches(列表、字符串模式){
      整数计数器=0
      bahList.each{String bah->
      if(bah==模式)计数器++
      }
      }
      
      需要更改为java风格(与groovy++的目的背道而驰),或者必须使用引用对象


      groovy++对于提高groovy/grails性能非常有用,但这肯定不是一种简单的方法,我也不确定是否应该使用java。

      如果将整个包标记为@Typed,则可以通过将单个类或方法标记为@Typed(TypePolicy.DYNAMIC)Yes来选择退出。也许是因为我用它做正确的事情。我不想用groovy编写光线跟踪器,但我可以想象用groovy或其中的一部分为它编写原型。但当我编写grails应用程序时(这正是我使用groovy的主要目的),性能真的没有问题。@ralf。仍然有人说Grails非常慢,我们无法控制Grails中的每一件事情。意味着Grails可以更快地完成任务,但我们不能深入?这是真的吗!有这些谈话,但我还没有遇到这些问题:-)买一辆卡车,抱怨它没有保时捷快。如果您真的需要速度,您可以随时使用java。深度:我用php和其他技术进行了10多年的web开发,几年前我转向了grails。我没有一个时刻无法控制或无法深入。这就是grails最好的一面:它使日常任务变得非常简单,并且仍然允许您深入研究。
        @Typed(TypePolicy.MIXED)
        def countMatches( List<String> bahList, String pattern ){
          int counter = 0
          bahList.each{ String bah ->
            if (bah==pattern) counter++
          }
        }