次のような方法があります:
def getInformation () {
return [true, "reason why"]
}
私はこのように使っています
def (isClear, reason) = getInformation()
誰かがこのメソッドを実行するときに読みやすくなるように、このメソッドの戻り値の型を定義する方法はありますか?
ベストアンサー1
このメソッドの実際の戻り値の型は、'def' を使用して宣言されているため、Object です。つまり、実際に返すオブジェクトに関係なく、何でも返すことができます。
次のコードも同様に有効です。
def getInformation () {
return "this is some information"
}
または
def getInformation () {
return 42
}
しかし、メソッドの戻り値の型は変更されていません。
ここでの本当の疑問は、なぜそのようなアプローチを選択するのかということです。私の意見では、次のことが物事をはるかに明確にするでしょう。
Result getInformation() {
return new Result(success: true, reason: "why")
}
これにより、呼び出し元にとってはるかに明確になり、作成する必要があるのは簡単なクラスだけです。
class Result {
boolean success
String reason
}
これで、明確に定義された API ができました。ここで直面している問題のため、メソッド シグネチャで def を使用することは決してありません。