gpt4 book ai didi

Ruby 的对象#define_method 与模块#define_method

转载 作者:数据小太阳 更新时间:2023-10-29 07:04:29 25 4
gpt4 key购买 nike

谁能详细说明ruby的Object#define_methodModule#define_method之间的区别以及它们通常用在什么地方?

最佳答案

对象#define_method 不存在:

o = Object.new
o.define_method
#NoMethodError: undefined method `define_method' for #<Object:0x1448a80>

但是,Object.define_method 存在:

Object.define_method
#NoMethodError: private method `define_method' called for Object:Class

那是因为Object是类Class的对象,而ClassModule的子类:

Object.class # => Class
Class.ancestors # => [Class, Module, Object, Kernel, BasicObject]

因此,当您调用 Object.define_method 时,您正在调用 Module#define_method

只要记住类是类 Class 的对象,它就会像泥一样清晰!

关于Ruby 的对象#define_method 与模块#define_method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6083917/

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