什么是| smtp |在下面的Ruby片段中意味着什么?

时间:2013-02-27 14:27:23

标签: ruby

我使用MailFactory发送电子邮件,并遇到了我以前从未见过的这个奇怪的条款。我来自PHP,现在已经在Ruby工作了大约一个半星期。

是| smtp |变量由Net :: SMTP.start返回的值,然后在{}块中使用?

response = Net::SMTP.start(cfg['host'], 25, cfg['from_domain'], cfg['username'], cfg['password'], :plain) {
    | smtp |
    recipients = cfg['mail_targets']['errors']
    smtp.send_message(mail.to_s, mail.from, [recipients, mail])
}

4 个答案:

答案 0 :(得分:1)

这是从start传递到块中的参数。

  

使用块调用此方法时,新启动的SMTP对象将生成块,并在块调用完成后自动关闭。否则,调用者有责任在完成后关闭会话。

http://apidock.com/ruby/Net/SMTP

答案 1 :(得分:1)

smtp是传递给块的参数的名称。 { |smtp| <code> }语法是Ruby块语法。

http://www.martinfowler.com/articles/simpleRuby.html

答案 2 :(得分:1)

是的,格式化有点奇怪(通常块变量在'{'旁边),但你正在使用块内的Net :: SMTP实例。

http://ruby-doc.org/stdlib-2.0/libdoc/net/smtp/rdoc/Net/SMTP.html

答案 3 :(得分:1)

这称为块。

Net :: SMTP :: start:http://ruby-doc.org/stdlib-2.0/libdoc/net/smtp/rdoc/Net/SMTP.html#method-c-start

有关红宝石块的更多信息:http://c2.com/cgi/wiki?BlocksInRuby