2

重複でしたらすみません。抽象クラスを実装する方法についての投稿をたくさん見つけましたが、それらが Ruby に実装されていない理由についての投稿はありません。

私はRubyで約4年間働いています。なぜ Ruby が抽象クラスのネイティブ実装を持たないのか、私はまだ本当に理解できませんか? 優れたアプリケーション設計のために、それが本当に必要な場合があります。私と他の開発者は「NoImplementedError」で空のメソッドを何度も繰り返しますが、それについては気分が悪いです。

インターフェイスと抽象クラスをサポートしないという裏にトリッキーなイデオロギーはありますか?

4

1 に答える 1

3

抽象クラスまたはインターフェイスを検討している場合は、コードに何らかの契約を作成することを考えている可能性が最も高いです。

ただし、Rubyは弱く型付けされるように設計されており、静的に型付けされる言語として設計されておらず、ダック タイピングに大きく依存しています。明らかに、場合によってはインターフェイス チェックを実行すると非常に便利な場合があります (たとえば、渡されたオブジェクトが必要なすべてのメソッドをサポートしていることを確認するため)。

私が覚えている限りでは、型付けされたバージョンを作成する意図があったか、Ruby と Dave Thomas は、これを試してうまくいかないと言った人について言及しました :)

于 2012-11-09T15:37:54.083 に答える