gpt4 book ai didi

ruby 类主体继承

转载 作者:太空宇宙 更新时间:2023-11-03 17:33:06 25 4
gpt4 key购买 nike

我想知道这样的东西在 ruby​​ 中是否可行。

# file a.rb
class A
puts self
end

# file b.rb
require 'a'
class B < A; end

# file run.rb
puts 'start'
require 'a'
puts 'between'
require 'b'
puts 'end'

# expected output
$ ruby run.rb
# => start
# => A
# => between
# => B
# => end

# what i've got
# => start
# => A
# => between
# => end

我想在需要时放入类常量。但我想实现一次,然后在子类中重复这个而不触及代码。

最佳答案

它不输出 B,因为包含 puts self 的 A 类 block 已经被求值。从 A 类继承时,它不会重新评估 A 类的主体。

概括地说,您可以将 Ruby 类视为要查找的方法的散列数组。当您继承一个类时,您会在查找列表中推送一个新的方法散列。

也就是说,Class#inherited 函数将允许您执行您正在寻找的操作:

class A
def self.inherited(klass)
puts klass
end
end

class B < A
end

还要注意模块的两个相关方法:Module#includedModule#extended

关于ruby 类主体继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27251323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com