gpt4 book ai didi

ruby - 在不初始化对象的情况下存储变量? ruby gem 'Mail'

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

使用 Ruby Gem 'Mail' ,我对如何在不初始化对象的情况下存储变量感到困惑?例如:

Mail.defaults do
retriever_method :pop3, :address => "pop.gmail.com",
:port => 995,
:user_name => '<username>',
:password => '<password>',
:enable_ssl => true
end

之后您可以调用 Mail.first 等方法,并让它返回邮箱中具有配置默认值的第一条消息。

我意识到 Ruby 中的一切都是一个对象,甚至是一个类,所以当调用 require 'mail' 时,实际上是否创建了一个包含 class Mail 的对象并且对程序疯狂可用?这里到底发生了什么?

最佳答案

mail.rb 的内容被加载到具有 require 'mail' 语句的文件中。

查看 gem 后,mail.rb 包含 Mail 模块,该模块又包含许多其他 require 语句。

ma​​il.rb

module Mail
## skipped for brevity

# Finally... require all the Mail.methods
require 'mail/mail'
end

ma​​il/mail.rb

module Mail
## skipped for brevity

# Receive the first email(s) from the default retriever
# See Mail::Retriever for a complete documentation.
def self.first(*args, &block)
retriever_method.first(*args, &block)
end
end

然后这些方法就可以供您的程序使用了。

关于ruby - 在不初始化对象的情况下存储变量? ruby gem 'Mail',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12322982/

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