gpt4 book ai didi

ruby - 请求深入了解 ruby​​ 代码

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

<分区>

我的团队一直在阅读现有的 ruby​​ 代码来加深我们的理解。我们通常会发现我们不太了解的事情,即使经过研究也是如此。请对以下问题发表评论。

问题一

对于下面的代码,为什么是class << self在模块名称下定义?这是否意味着使用模块名称定义一个类?

module GravatarImageTag

class << self
attr_accessor :configuration
end

问题2

作者为什么定义class << self并继续使用 self. 定义方法?我们的理解是您可以定义 self.class << self 开头的 block 中的方法而不是重复 self.对于每种方法。

module GravatarImageTag

class << self
attr_accessor :configuration
end

def self.configuration
@configuration ||= Configuration.new
end

def self.configure
yield(configuration)
end

问题3

为什么作者在方法中使用类名而不是self self.include(base) ?此外,根据这个文件的结构,类是self.include(base)。的成员?这涉及到问题1。

module GravatarImageTag

class << self
attr_accessor :configuration
end

def self.configuration
@configuration ||= Configuration.new
end

def self.configure
yield(configuration)
end

class Configuration
attr_accessor :default_image, :filetype, :include_size_attributes,
:rating, :size, :secure

def initialize
@include_size_attributes = true
end
end

def self.included(base)
GravatarImageTag.configure { |c| nil }
base.extend ClassMethods
base.send :include, InstanceMethods
end

谢谢。

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