【问题标题】:Groovy Equivalent: javascript object methodsGroovy 等效项:javascript 对象方法
【发布时间】:2021-01-17 16:05:01
【问题描述】:

在 JavaScript 中,您可以执行以下操作:

var obj = {
    property: 1,
    method1: function() {
      //...
    },
    method2: function() {
      //...
    }
  };

obj.method1()

我想知道是否有一个 groovy 等价物(包含方法的映射)。我知道这就像上课,但我不想上课哈..

【问题讨论】:

    标签: grails groovy


    【解决方案1】:

    是的,您可以在地图中放置闭包。但这不是获得的方式 Groovy 中的对象。没有“这个”的概念,它知道 地图。

    def obj = [
      inc: { it + 1 }
    ]
    
    println obj.inc(10)
    

    【讨论】:

    • 谢谢,这正是我想要的!除了你的答案,我尝试了各种形式的语法。也很高兴了解“这个”。
    【解决方案2】:

    好的,所以 Javascript 不是 OOP。他们有对象,但仅此而已。你展示的是一个对象。

    在 Groovy 中,您可以使用可以实例化对象的类来执行此操作,然后您可以在对象上执行此操作。例如,您可以create a CommandObject(这可能是您想要的)然后填写您想要的属性或在实例化时填写它们。例如(使用上面的例子):

    def paramsDesc = new ParamsDescriptor()
    paramsDesc.paramType = 'paramtype'
    paramsDesc.keyType = 'keyType'
    paramsDesc.name = 'name'
    paramsDesc.idReferences = 'id'
    paramsDesc.description = 'desc'
    paramsDesc.mockData = 'mock'
    paramsDesc.values = []
    

    或者(如果你创建一个构造函数)你可以一次实例化所有:

    def paramsDesc = new ParamsDescriptor('paramtype','keyType','name','id','desc','mock',[])
    

    CommandObjects 可以有方法和功能(如上)。但你只需要先实例化它们 (def paramsDesc = new ParamsDescriptor())

    这是类和对象的区别;将类视为蓝图,将对象视为从蓝图创建的对象。

    【讨论】:

      猜你喜欢
      • 2017-08-02
      • 2012-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-21
      • 2011-01-24
      • 2014-12-14
      • 2015-04-23
      相关资源
      最近更新 更多