заводной способ if (var) fn(var)


Я хочу знать, есть ли какой-нибудь более крутой способ кода ниже:

def dataList = OperLog.createCriteria().list(max:params.max, offset:params.offset) {
    if(params.relationId){
      eq('relationId',params.long('relationId'))
    }
    order(params.sort, params.order)
}

Например, someVar?.метода someMethod есть ли какой-либо сахар не вызывать метод, где это params равно null

2 2

2 ответа:

Вы могли бы сделать:

params.relationId?.with { rid ->
  println rid
}

И код внутри блока with не будет выполнен, если params.relationId является null...

Тем не менее, я бы сказал, что ваш исходный код более очевиден в своих намерениях, и вам не придется пытаться понять, что он делает, когда вы придете к нему позже; -)

Есть ли какой-нибудь более крутой стиль этого?

def list = [vo1,vo2,vo3]
list.each{
   someMethod(it)
}

Так же, как

list*.toString()