0

MailFactory を使用して電子メールを送信していますが、これまでに見たことのないこの奇妙な句に遭遇しました。私は PHP 出身で、Ruby を始めて約 1 週間半になります。

です | 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

4 に答える 4

1

startブロックに渡される引数です。

このメソッドがブロックで呼び出されると、新しく開始された SMTP オブジェクトがブロックに渡され、ブロック呼び出しが終了すると自動的に閉じられます。それ以外の場合、終了時にセッションを閉じるのは呼び出し元の責任です。

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

于 2013-02-27T14:29:09.620 に答える
1

smtpブロックに渡される引数の名前です。{ |smtp| <code> }構文は Ruby ブロック構文です。

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

于 2013-02-27T14:29:28.350 に答える
1

はい、フォーマットは少し奇妙です (通常、ブロック変数は '{' の隣にあります) が、ブロック内で Net::SMTP インスタンスを操作しています。

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

于 2013-02-27T14:30:09.437 に答える
1

これをブロックと呼びます。

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

Ruby ブロックの詳細: http://c2.com/cgi/wiki?BlocksInRuby

于 2013-02-27T14:37:00.273 に答える