我使用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])
}
答案 0 :(得分:1)
这是从start
传递到块中的参数。
使用块调用此方法时,新启动的SMTP对象将生成块,并在块调用完成后自动关闭。否则,调用者有责任在完成后关闭会话。
答案 1 :(得分:1)
smtp
是传递给块的参数的名称。 { |smtp| <code> }
语法是Ruby块语法。
答案 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