【发布时间】:2018-06-11 10:13:48
【问题描述】:
我正在关注this的文章来设置排序顺序。
摘自上述文章
class Language {
String name
boolean dynamic
String toString() { "name: $name, dynamic: $dynamic" }
}
def languages = [
new Language(name: 'Groovy', dynamic: true),
new Language(name: 'Java', dynamic: false),
new Language(name: 'Clojure', dynamic: true)
]
def list = ['name', 'dynamic']
sh = new GroovyShell()
closure = sh.evaluate("{ }")
def cList = list.collect { closure(it) }
println cList
// We order first on dynamic property and then name property.
def orderByDynamicAndName = new OrderBy([{ it.dynamic }, { it.name }])
在这里,我想从列表中动态传递闭包列表。
比如说,有一个列表,列表在不同的应用程序/类中的元素大小可能会有所不同。 这是我想要动态关闭列表的主要原因。
def list = ['name', 'dynamic']
从上面的列表中,想要将其生成为闭包列表并将其作为参数传递给OrderBy类。
//Build closure list. But, not sure how to generate it from above list
def cList =
def orderByDynamicAndName = new OrderBy(cList)
尝试引用this 线程,但有些无法按需要生成cList
尝试构建cList,如下图;出错
def list = ['name', 'dynamic']
sh = new GroovyShell()
closure = sh.evaluate("{ fieldName -> \"it\".fieldName }")
def cList = list.collect { closure(it) }
错误:
抛出异常
groovy.lang.MissingPropertyException:没有这样的属性:类的字段名:java.lang.String
如何克服这个问题?
【问题讨论】: