crystal-lang - 在模块中混合类和实例变量

标签 crystal-lang

来自github issue #4820通过 @TPei .

嘿,我只是想知道是否可以通过使用 self.included(base) 钩子(Hook)或类似的东西,在模块中混合类和实例变量,就像在 ruby​​ 中一样。是否有任何结构支持这一点或者将来有什么计划?

澄清一下: 在 ruby​​ 中,可以定义一个模块(MyFirstModule),然后在另一个模块(MySecondModule)中定义

def self.included(base)
  base.extend(MyFirstModule)
end

这会导致 MyFirstModule 中的方法成为 MySecondModule 中的类方法,从而使我能够在用户包含 MySecondModule 时添加类方法和实例方法

最佳答案

回答者@straight-shoota

这可以通过包含的宏钩子(Hook)来完成:reference

macro included
  extend MyFirstModule
end

关于crystal-lang - 在模块中混合类和实例变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45620355/

相关文章:

metaprogramming - 如何检查是否在 Crystal 中定义了常量

crystal-lang - Crystal 郎 : call macro in macro?

arrays - #clone 和 #dup 有什么区别

http - Crystal-lang 没有重载匹配 'HTTP::Server.new' 类型为 Int32 的 http 服务器

function - 如何访问函数内部的全局变量

crystal-lang - 为什么 Crystal 用于迭代的宏语法与 Crystal 的其余部分不同

unit-testing - 编译时的 Crystal 自动化单元测试

performance - Int32 与 Float64 在 Crystal 中的表现

concurrency - 我怎样才能停止光纤?

random - 如何在 Crystal 中生成随机数?