Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.ruby > #3225
| From | Brian Candler <b.candler@pobox.com> |
|---|---|
| Newsgroups | comp.lang.ruby |
| Subject | Re: To Yield or Not to Yield: An Inferable Question |
| Date | 2011-04-20 03:59 -0500 |
| Organization | Service de news de lacave.net |
| Message-ID | <157ee9d8e95b68bee86be7ba51ba49f1@ruby-forum.com> (permalink) |
| References | <CA1B8DEB-7979-4D1B-8594-3BA3C72AE76F@carboni.ca> <c0656e03bb64f14a6b7f3ac7a3ab69e5@ruby-forum.com> <78681B86-AB88-4DA6-A8AA-EEA59186B407@carboni.ca> |
Michael Edgar wrote in post #993395:
> If one peruses the Ruby standard library, one will find that just in the
> Ruby
> code alone, block_given? occurs 265 times, in *every single case* is
> used
> to execute yield conditionally, and in every single case, the result is
> used
> only as a simple constant. [4]
However there are some cases where this is done unnecessarily,
net/telnet.rb being the prime example. e.g.
if block_given?
waitfor({"Prompt" => match, "Timeout" => time_out}){|c| yield c
}
else
waitfor({"Prompt" => match, "Timeout" => time_out})
end
could have been written simply as:
waitfor({"Prompt" => match, "Timeout" => time_out}, &blk)
Net::Telnet also has a load of conditionals because it lets you pass an
optional block to each call for capturing debug information - an awkward
API to use, because often you end up passing the same block every time.
It would have been much easier to pass this in the options hash where it
could have been set as a default.
e.g.
t = Net::Telnet.new("Debug" => lambda { |c| print c }, ...)
t.cmd("foo")
t.cmd("bar")
t.cmd("baz")
whereas as the moment you have to write
t = Net::Telnet.new(...)
out = lambda { |c| print c }
t.cmd("foo",&out)
t.cmd("bar",&out)
t.cmd("baz",&out)
Also, a Debug parameter could invoke the "<<" method instead of "call",
which would make it usable with Files and Strings. Then Proc#<< could be
aliased to call, and duck-typing would suddenly become a lot prettier.
There would also be no need for Enumerator::Yielder either.
Sorry, I've strayed right off there :-)
--
Posted via http://www.ruby-forum.com/.
Back to comp.lang.ruby | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[ANN] To Yield or Not to Yield: An Inferable Question Michael Edgar <adgar@carboni.ca> - 2011-04-14 12:47 -0500
Re: To Yield or Not to Yield: An Inferable Question Brian Candler <b.candler@pobox.com> - 2011-04-17 15:22 -0500
Re: To Yield or Not to Yield: An Inferable Question Michael Edgar <adgar@carboni.ca> - 2011-04-17 16:40 -0500
Re: To Yield or Not to Yield: An Inferable Question Ryan Davis <ryand-ruby@zenspider.com> - 2011-04-18 03:41 -0500
Re: To Yield or Not to Yield: An Inferable Question Brian Candler <b.candler@pobox.com> - 2011-04-18 10:53 -0500
Re: To Yield or Not to Yield: An Inferable Question Brian Candler <b.candler@pobox.com> - 2011-04-20 03:59 -0500
Re: To Yield or Not to Yield: An Inferable Question Michael Edgar <adgar@carboni.ca> - 2011-04-20 16:46 -0500
Re: To Yield or Not to Yield: An Inferable Question Brian Candler <b.candler@pobox.com> - 2011-04-21 04:47 -0500
Re: To Yield or Not to Yield: An Inferable Question Robert Klemme <shortcutter@googlemail.com> - 2011-04-21 06:18 -0500
Re: To Yield or Not to Yield: An Inferable Question Brian Candler <b.candler@pobox.com> - 2011-04-21 12:55 -0500
Re: [ANN] To Yield or Not to Yield: An Inferable Question Robert Klemme <shortcutter@googlemail.com> - 2011-04-18 04:34 -0500
Re: [ANN] To Yield or Not to Yield: An Inferable Question Michael Edgar <adgar@carboni.ca> - 2011-04-18 04:46 -0500
Re: [ANN] To Yield or Not to Yield: An Inferable Question Robert Klemme <shortcutter@googlemail.com> - 2011-04-18 06:16 -0500
Re: [ANN] To Yield or Not to Yield: An Inferable Question Michael Edgar <adgar@carboni.ca> - 2011-04-18 07:26 -0500
csiph-web