Crystalプログラミング言語でインターフェイスの概念を使用する可能性はありますか?Crystal in interface
モジュールは近づいていますが、名前空間の処理には主に使用されているようです。
したがって、質問はGolangスタイルのインターフェイスに向かっています。
Crystalプログラミング言語でインターフェイスの概念を使用する可能性はありますか?Crystal in interface
モジュールは近づいていますが、名前空間の処理には主に使用されているようです。
したがって、質問はGolangスタイルのインターフェイスに向かっています。
使用することができますが、これは、彼らはまた、階層を作成(最初の場所にするために、ネストされたクラスを使用しているものではありません)。
モジュールは、異なるクラス(またはモジュール)で実装を共有できるメソッドをグループ化するための、ミックスインとして解釈されます。モジュールは抽象メソッドを保持することもでき、その実装は固有です。
モジュールは明示的にクラスに含まれており、タイプをモジュール名で制限することができます。そのため、モジュールはインターフェイスとして機能します。
抽象メソッドのみを持つモジュールを作成すると、純粋なインターフェースが可能です。
あなたは、モジュールは、名前空間の階層を作成するために使用されているabstract
abstract class Animal
abstract def talk
end
class Dog < Animal
def talk # You must implement talk
"Woof!"
end
end
class Person
getter pet
def initialize(@name : String, @pet : Animal)
end
end
john = Person.new "John", Dog.new
john.pet.talk # => "Woof!"
詳細と例については、以下を参照してください。https://github.com/crystal-lang/crystal/issues/3489 –