为什么Grails要求我在控制器中使用'def'而不是'void'?
以以下控制器为例:为什么Grails要求我在控制器中使用'def'而不是'void'?,grails,groovy,grails-controller,Grails,Groovy,Grails Controller,以以下控制器为例: package test class TestController { static defaultAction = "test" def test() { render "test" } } 为什么test是用def test(){定义的,而不是像void test(){这样的东西?def关键字不是只用于脚本中的闭包或函数(即不在Groovy类中)?渲染无效,因此在这种情况下,测试操作可以是无效,但在返回模型贴图的情况下,操作必须
package test
class TestController {
static defaultAction = "test"
def test() {
render "test"
}
}
为什么
test
是用def test(){
定义的,而不是像void test(){
这样的东西?def
关键字不是只用于脚本中的闭包或函数(即不在Groovy类中)?渲染
无效,因此在这种情况下,测试
操作可以是无效
,但在返回模型贴图的情况下,操作必须是非无效的:
def create() {
[personInstance: new Person(params)]
}
由于有些操作可以返回值,而有些操作不能返回值,因此一般语法必须返回
def
,以支持所有变量。Burt的答案是正确的,但我遇到的真正问题是我误解了def
是什么。与JavaScript中的var
不同,你可以将其想象为对象爪哇
我认为使用def
就像做(JavaScript)一样
而实际上它就像(Java)
它不是一种不同的函数/闭包,它就像一种返回类型-def
可以应用于任何对象(Groovy没有数据原语,因此任何值也都是一个对象,这与Java不同)
它帮助我的Java大脑思考
def bar = "foo";
作为
public Object test() {
return someObject;
}
def bar = "foo";
Object bar = "foo";