Crystal 类 中的 < 符号有什么用?
What are < symbols in Crystal classes used for?
这个class中的<
符号是什么,它的用途是什么?
class CommentSerializer < BaseSerializer
def initialize(@comment : Comment)
end
def render
{body: @comment.body}
end
end
https://crystal-lang.org/api/0.33.0/Class.html#T.class):BoolforallT-instance-method
不确定这是正确的还是什么意思:
Returns whether this class inherits or includes other.
<
表示继承。您应该将 class CommentSerializer < BaseSerializer
理解为 class CommentSerializer
源自 或 基于 BaseSerializer
. CommentSerializer
继承 BaseSerializer
的行为:它获取所有实例变量和所有方法,而无需再次写出它们。这种继承的思想对于所有面向对象的编程语言都是通用的,因为它是表达代码重用的一种有用方式:BaseSerializer
中的所有内容在其子class 中保持不变,并且每个子class 添加 stuff/makes 更改以针对特定目的定制通用行为。
您找到的<
符号是测试此关系的方法。它是一个表达式,与声明中的 <
不同(内置于语法中)。这个想法是您定义了 CommentSerializer < BaseSerializer
,因此测试 CommentSerializer < BaseSerializer
将 return 为真。符号的重用是助记符。
这个class中的<
符号是什么,它的用途是什么?
class CommentSerializer < BaseSerializer
def initialize(@comment : Comment)
end
def render
{body: @comment.body}
end
end
https://crystal-lang.org/api/0.33.0/Class.html#T.class):BoolforallT-instance-method
不确定这是正确的还是什么意思:
Returns whether this class inherits or includes other.
<
表示继承。您应该将 class CommentSerializer < BaseSerializer
理解为 class CommentSerializer
源自 或 基于 BaseSerializer
. CommentSerializer
继承 BaseSerializer
的行为:它获取所有实例变量和所有方法,而无需再次写出它们。这种继承的思想对于所有面向对象的编程语言都是通用的,因为它是表达代码重用的一种有用方式:BaseSerializer
中的所有内容在其子class 中保持不变,并且每个子class 添加 stuff/makes 更改以针对特定目的定制通用行为。
您找到的<
符号是测试此关系的方法。它是一个表达式,与声明中的 <
不同(内置于语法中)。这个想法是您定义了 CommentSerializer < BaseSerializer
,因此测试 CommentSerializer < BaseSerializer
将 return 为真。符号的重用是助记符。