我能理解什么是闭包。我可以理解下面的例子。
def list = ['a','b','c','d']
def newList = []
def clos = { it.toUpperCase() }
list.collect( newList, clos )
assert newList == ["A", "B", "C", "D"]
我去看了 g:select 文档。我在下面看到了。
<g:select optionKey="id" optionValue="${{it.title?.toUpperCase()}}" name="book.title" from="${bookList}" />
我不明白 ${{it.title?.toUpperCase()}}。
我理解每个对象的标题被转换为大写的逻辑,但为什么我们需要双“{}”..
为什么它不能使用 ${it.title?.toUpperCase()}
最佳答案
外面的 ${ } 不是闭包,是一个 GSP Expression ,只有内部 {} 是闭包。如果您只输入 ${it.title?.toUpperCase()},您不会将参数传递给闭包,而是传递实际的“it.title?.toUpperCase()”解析值。
关于grails - 为什么我们在 g :select optionvalue 中使用闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12295820/