ruby - 如何获取已在 ruby 中定义方法的类?
问题描述
有下面的片段:
class Foo
def initialize
puts self.class
end
end
class Bar < Foo
def bark
puts self.class
end
end
class Fizz < Bar
end
Fizz.new.bark
此代码段将输出两次Fizz
(现场示例)。我想找到一些可以替换的东西,self.class
它允许这个程序输出Foo
(从初始化)然后Bar
(从树皮)。
我目前的解决方案是硬编码函数名称,但我想要更动态的东西。
解决方案
这行得通。(不过,可能有更好的方法。)
class Foo
def initialize
puts method(__callee__).owner
end
end
class Bar < Foo
def bark
puts method(__callee__).owner
end
end
class Fizz < Bar
end
Fizz.new.bark
# >> Foo
# >> Bar
推荐阅读
- android - 无法将图像从位图数据保存到 Android 文件系统
- flyway - Flyway:有没有办法根据动态条件(sql条件)有条件地应用脚本?
- google-kubernetes-engine - 无法将 Kubeflow 管道部署到 GKE 集群
- openedge - 如何在 PROGRESS 4GL 的 OPEN QUERY 语句中实现 NOT EXISTS - OpenEdge 10.2A
- mysql - MySQL 错误:使用子查询和分页查询获取总记录
- docker - 如何在cmd中运行dockerfile
- postgresql - Postgresql REFRESH MATERIALIZED VIEW CONCURRENTLY 破坏了顺序
- android - 如何删除/禁用 viewpager 适配器中的页面?
- c# - 如何将 Playerprefs 保存到这种情况下(新手)
- intellij-idea - (HTML) 结束标签的 PhpStorm/IDEA 内联提示?