在Ruby中,可以通过重新打开来访问对象的本征类(或"单例类").这对于定义"私有类方法"特别有用:
class Foo
class << self
private
def declarative_method_name
end
end
declarative_method_name
end
# Foo.declarative_method_name => ERROR!
Run Code Online (Sandbox Code Playgroud)
但是,在Crystal中这不是语法:
Syntax error in ./test.cr:2: expecting token 'CONST', not '<<'
class << self
^
Run Code Online (Sandbox Code Playgroud)
目前还有另一种(或实际上是任何)方法在Crystal实现这一目标吗?
有没有eigenclass,或者更通常被称为单例类Ruby的这些日子里(因为有Object#singleton_class),在水晶.
但是,支持定义类方法并在类级别调用它们:
class Foo
private def self.declarative_method_name
puts "hey"
end
declarative_method_name
end
Run Code Online (Sandbox Code Playgroud)
def self.这里的构造由编译器专门化,并且它下面没有更一般的概念.
| 归档时间: |
|
| 查看次数: |
206 次 |
| 最近记录: |