私の第一言語は静的に型付けされています(Java)。Javaでは、すべてのメソッドから単一の型を返す必要があります。たとえば、条件付きでを返すメソッドString
や、条件付きでを返すメソッドを持つことはできませんInteger
。しかし、たとえばJavaScriptでは、これは非常に可能です。
静的に型付けされた言語では、これが悪い考えである理由がわかります。すべてのメソッドが返された場合Object
(すべてのクラスが継承する共通の親)、あなたとコンパイラはあなたが何を扱っているのか分かりません。実行時にすべての間違いを発見する必要があります。
しかし、動的に型付けされた言語では、コンパイラーさえ存在しない場合があります。動的に型付けされた言語では、複数の型を返す関数が悪い考えである理由は私には明らかではありません。静的言語の私のバックグラウンドにより、このような関数を書くことは避けられますが、コードを見えないようにすっきりさせることができる機能については気にされているのではないかと心配しています。
編集:私の例を削除します(より良い例を考えることができるまで)。私がやろうとしているのではない点に返信するように人々を誘導していると思います。
(coerce var 'string)
、a string
または(concatenate 'string this that the-other-thing)
同様の利回りがあります。私ThingLoader.getThingById (Class<extends FindableThing> klass, long id)
も同様のことを書きました。そして、そこに、私はあなたが尋ねサブクラス何かを返すことがあります:loader.getThingById (SubclassA.class, 14)
返される可能性がありますSubclassB
それが伸びをSubclassA
...