Groovy 在这种情况下如何使用with语句?

Groovy 在这种情况下如何使用with语句?,groovy,Groovy,我有类似的东西 def firstName = apiAccessor.getIdentityAPI().getUser(commentInput.authorId).firstName def lastName = apiAccessor.getIdentityAPI().getUser(commentInput.authorId).lastName commentVar.authorFullName = firstName + " " + lastName 它是有效的,但我想用语句做同样的

我有类似的东西

def firstName = apiAccessor.getIdentityAPI().getUser(commentInput.authorId).firstName
def lastName = apiAccessor.getIdentityAPI().getUser(commentInput.authorId).lastName
commentVar.authorFullName = firstName + " " + lastName
它是有效的,但我想用语句做同样的事情

我试过了,但没用:

with(apiAccessor.getIdentityAPI().getUser(commentInput.authorId)) {
    commentVar.authorFullName = it.firstName + " " + it.lastName
}

它应该是什么样子?

你用{…}(或
)直接点击你想用的东西
在封闭的内部。它是一个委托,所以你甚至不需要使用
it`(或命名参数)

您的代码非常接近:

def data = [a: [b: [c: [firstName: "X", lastName: "Y"]]]]
def commentVar = [:]

data.a.b.c.with {
    commentVar.authorFullName = firstName + " " + lastName
}

assert commentVar.authorFullName == "X Y"

我认为它应该是apiAccessor.getIdentityAPI().getUser(commentInput.authord)。使用{commentVar.authorFullName=firstName+“”+lastName}是的,它可以工作。谢谢