[#4341] DRY and embedded docs. — Hugh Sasse Staff Elec Eng <hgs@...>
If I have a here document in some ruby program:
[#4347] Re: DATA and rewind. — ts <decoux@...>
>>>>> "H" == Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
[#4350] Re: Thirty-seven Reasons [Hal Fulton] Love[s] Ruby — "David Douthitt" <DDouthitt@...>
[#4396] Re: New Require (was: RAA development ideas (was: RE: Looking for inp ut on a 'links' page)) — Hugh Sasse Staff Elec Eng <hgs@...>
On 9 Aug 2000, Dave Thomas wrote:
[#4411] Re: RAA development ideas (was: RE: Lookin g for inp ut on a 'links' page) — Aleksi Niemel<aleksi.niemela@...>
Me:
On Thu, 10 Aug 2000, [iso-8859-1] Aleksi Niemelwrote:
[#4465] More RubyUnit questions. — Hugh Sasse Staff Elec Eng <hgs@...>
I am beginning to get a feel for this, but I still have a few more
[#4478] Re: RubyUnit. Warnings to be expected? — ts <decoux@...>
>>>>> "H" == Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
[#4481] Invoking an extension after compilation — Dave Thomas <Dave@...>
Hi,
[#4501] What's the biggest Ruby development? — Dave Thomas <Dave@...>
[#4502] methods w/ ! giving nil — Hugh Sasse Staff Elec Eng <hgs@...>
I have got used to the idea that methods that end in '!' return nil if
[#4503] RubyUnit and encapsulation. — Hugh Sasse Staff Elec Eng <hgs@...>
My_class's instance variables are not all "attr :<name>" type variables,
[#4537] Process.wait bug + fix — Brian Fundakowski Feldman <green@...>
If your system uses the rb_waitpid() codepath of rb_f_wait(),
[#4567] Re: What's the biggest Ruby development? — Aleksi Niemel<aleksi.niemela@...>
Dave said:
Robert Feldt <feldt@ce.chalmers.se> writes:
On Sat, 26 Aug 2000, Dave Thomas wrote:
Robert Feldt <feldt@ce.chalmers.se> writes:
On Mon, 28 Aug 2000, Dave Thomas wrote:
Robert Feldt <feldt@ce.chalmers.se> writes:
[#4591] Can't get Tcl/Tk working — Stephen White <steve@...>
I can't get any of the samples in the ext/tk/sample directory working. All
I'm sure looking forwards to buying the book. :)
Stephen White <steve@deaf.org> writes:
On Sun, 27 Aug 2000, Dave Thomas wrote:
Stephen White <steve@deaf.org> writes:
[#4608] Class methods — Mark Slagell <ms@...>
Reading the thread about regexp matches made me wonder about this:
[#4611] mod_ruby 0.1.19 — shreeve@...2s.org (Steve Shreeve)
Shugo (and others),
[#4633] Printing tables — DaVinci <bombadil@...>
Hi.
[#4647] Function argument lists in parentheses? — Toby Hutton <thutton@...>
Hello,
[#4652] Andy and Dave's European Tour 2000 — Dave Thomas <Dave@...>
Hi,
[#4672] calling super from c — Robert Feldt <feldt@...>
[#4699] Double parenthesis — Klaus Spreckelsen <ks@...1.ruhr-uni-bochum.de>
Why is the first line ok, but the second line is not?
[ruby-talk:4529] Re: for and multiple assignment?
Hugh Sasse Staff Elec Eng <hgs@dmu.ac.uk> writes:
> Ruby already has mutiple assignment. Would it be possible to extend
> for to allow multiple things to be selected at once?
>
> for p1, p2, p3, result1, result2 in long_list_of_tests do
> mine = My_class.new()
> mine.method1(p1,p2,p3)
> assert_equal(result1, mine.feature1())
> assert_equal(result2, mine.feature2())
> end
> ...
> Maybe there is a good reason why this has not been allowed.
Well, I can't speak to the reason, but I can suggest why it might not
be a Good Thing.
Firstly, Ruby does allow
for a,b,c in [[1,2,3],[4,5,6]]
The 'for' iterates over the elements in the list, which are
themselves arrays. The assignment of the array to the for loop
variables is then done in parallel.
So, why not allow the assignment to pull values from a linear array?
Two possible reasons:
1. It would be a special case, inconsistent with the semantics of
assignment elsewhere. Remember that the for loop actually becomes
(effectively)
for i in list => list.each do |i|
So a for loop with multiple parameters is
for i,j,k in list => list.each do |i,j,k|
The iterator would have to change it's behavior depending on the
block parameter count, which would be weird.
2. It isn't very good OO style. This one is trickier. What you're
coding up top is an array where every fifth element is a parameter,
every fifth element plus one is another parameter, etc.
Wouldn't it be more natural to have a class which represented an
individual test?
class TestStuff
def initialize(p1, p2, p3, res1, res2)
#...
end
end
tests = [
TestStuff.new(1, 2, 3, 4, 5),
TestStuff.new(5, 6, 7, 8, 9)
];
for t in tests
mine = My_class.new()
mine.method1(t.p1, t.p2, t.p3)
assert_equal(t.res1, mine.feature1())
assert_equal(t.res2, mine.feature2())
end
You could then extend it further. TestStuff could 'know' about
My_class,
class TestStuff
def initialize(p1, p2, p3, res1, res2)
#...
end
def runTest
mine = My_class.new()
mine.method1(@p1, @p2, @p3)
assert_equal(@res1, mine.feature1())
assert_equal(@res2, mine.feature2())
end
end
And the loop would be
tests.each {|t| t.runTest}
However, whether this is appropriate depends on the structure of
your application.
Regards
Dave