Groovy のこのメソッドの戻り値の型は何でしょうか? 質問する

Groovy のこのメソッドの戻り値の型は何でしょうか? 質問する

次のような方法があります:

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 を使用することは決してありません。

おすすめ記事