首页 > 解决方案 > Groovy 中的“def”代表什么

问题描述

我们使用 def 来声明变量和定义函数

def myVariable

def getMyVar = {}

def getMyVariable () {}

这些def定义是什么?以及它如何识别函数/闭包或方法?

标签: functionvariablesgroovyclosures

解决方案


在 Groovy 中使用def关键字时,实际的类型持有者是 Object,因此您可以将任何对象分配给使用 def 定义的变量,如果方法声明返回 def,则返回任何类型的对象。def关键字用于类型在运行时动态定义的无类型变量。

这里有 3 个使用defObject 作为类型的定义。第一个定义了一个无类型变量,第二个定义了一个分配有空闭包的变量。第三个定义方法的返回类型。

def myVariable                  // Object myVariable

def getMyVar = {}               // Object getMyVar = {}

def getMyVariable() {}          // Object getMyVariable() {}

请注意,如果将原始数值(例如 int、float 等)分配给def变量,它将自动将原始类型转换为 Integer、Float 等类的对象实例。

Groovy 样式指南#3#21)给出了一些关于何时使用可选类型def以及何时使用显式强类型的指南。


推荐阅读