Crystal 中的界面
interfaces in Crystal
是否可以在 Crystal 编程语言中使用接口的概念?
接近的是模块,但它们似乎主要用于(和设计)名称空间处理?
所以问题更倾向于 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!"
模块用于创建命名空间层次结构,但这并不是它们最初的用途(嵌套 类 也创建层次结构)。
模块意味着混合,将实现可以在不同 类(或模块)中共享的方法分组。模块也可以包含抽象方法,其实现是特定的。
模块明确包含在 类 中,您可以限制模块名称的类型,因此它们可以作为接口。
如果您创建一个只有抽象方法的模块,那么纯接口是可能的。
是否可以在 Crystal 编程语言中使用接口的概念?
接近的是模块,但它们似乎主要用于(和设计)名称空间处理?
所以问题更倾向于 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!"
模块用于创建命名空间层次结构,但这并不是它们最初的用途(嵌套 类 也创建层次结构)。
模块意味着混合,将实现可以在不同 类(或模块)中共享的方法分组。模块也可以包含抽象方法,其实现是特定的。
模块明确包含在 类 中,您可以限制模块名称的类型,因此它们可以作为接口。
如果您创建一个只有抽象方法的模块,那么纯接口是可能的。