[#408634] How do I make lots of classes aware of each other? — "Andrew S." <lists@...>

I'm apparently missing something fundamental in my knowledge of classes

10 messages 2013/07/02

[#408712] Ruby web service with REST support — "Shubhada S." <lists@...>

Hi All,

17 messages 2013/07/05

[#408812] create variables depending on counter — stefan heinrich <lists@...>

Hi community,

21 messages 2013/07/09

[#408854] execute commands within SMTP email code: send content in variables and not actual variables — dJD col <lists@...>

I am trying to send an email using the code below. I am able to send the

9 messages 2013/07/10

[#409031] tap { break } idiom deserves its own Kernel method? — Andy Lowry <lists@...>

I use this idiom from time to time:

13 messages 2013/07/22

[#409072] Link To Masses Of External Data In Openoffice? — "Austin J." <lists@...>

This is what I want to do.

19 messages 2013/07/23
[#409102] Re: Link To Masses Of External Data In Openoffice? — Tamara Temple <tamouse.lists@...> 2013/07/24

[#409103] Re: Link To Masses Of External Data In Openoffice? — "Austin J." <lists@...> 2013/07/25

tamouse m. wrote in post #1116598:

[#409122] Re: Link To Masses Of External Data In Openoffice? — Tamara Temple <tamouse.lists@...> 2013/07/26

[#409142] Re: Link To Masses Of External Data In Openoffice? — "Austin J." <lists@...> 2013/07/26

tamouse m. wrote in post #1116750:

[#409073] class <=> module — Bráulio Bhavamitra <lists@...>

Hello all,

17 messages 2013/07/23

[#409104] Ruby newbie question on Methods (NoMethoderror) — "Crispian A." <lists@...>

I have recently started learning ruby and so I am writing a small little

10 messages 2013/07/25

[#409170] Working through Ch.10 for learning to program 2.0 (Chris Pine) — JD JD <lists@...>

So, I have been working through this book, and have been doing ok up

33 messages 2013/07/28
[#409195] Re: Working through Ch.10 for learning to program 2.0 (Chris Pine) — Harry Kakueki <list.push@...> 2013/07/29

I tried this and came up with a one-liner that seems to do it. It sorts the

[#409258] WATIR - ScriptError popup on IE - Unable to get rid of! — Graeme Halls <lists@...>

I am new to Ruby & Watir, and I am having a nightmare with IE and Script

11 messages 2013/07/31

Re: tap { break } idiom deserves its own Kernel method?

From: Andy Lowry <lists@...>
Date: 2013-07-22 20:38:12 UTC
List: ruby-talk #409035
This is my first code sample but with one temporary variable removed. 
Getting rid of the remaining temp variable is much more difficult. You 
could inline the "Model.where..." expression but then you'd end up 
executing it repeatedly in the id_list loop. The reason I use the idiom 
is to avoid cluttering my namespace with names for things that are of 
ephemeral interest, i.e. only useful as a step in achieving some needed 
value. In my opinion, those values are less prominent in the "pipe" 
version of my code than in either my first code sample or in your code, 
and that seems valuable to me.

The only thing that seems arcane to me in this thread is using break 
inside tap; as I pointed out, it's something a lot of ruby coders won't 
understand. Code blocks with well-defined behaviors are obviously well 
understood by any ruby developer who's not a total novice. I believe 
that "pipe" would take a useful idiom that is seen occasionally (not 
just in my code) and is arcane because of the tap/break combo, and 
provide a non-arcane alternative.

Andy

Robert Klemme wrote in post #1116270:
> On Mon, Jul 22, 2013 at 7:37 PM, Andy Lowry <lists@ruby-forum.com>
> wrote:
>
>> the order their ids appear in that list.
>>
>> it a name and its own Kernel method, rather than forcing the use of a
>> Then the example above turns into:
>>
>>   sorted = Model.where(id: id_list).pipe do |unsorted|
>>     unsorted.reduce(Hash.new) {|h,o| h[o.id] = o; h}
>>   end.pipe do |objs_map|
>>     id_list.map{|id| objs_hash[id]}
>>   end
>>
>> Any thoughts?
>>
>
>  I would choose a much less arcane solution:
>
> objs_map = {}
> Model.where(id: id_list).each {|o| objs_map[o.id] = o}
> sorted = id_list.map{|id| objs_map[id]}
>
> If id_list is smallish (< 30 or so) then index lookup might actually be
> faster - or at least fast enough.
>
> sorted = Model.where(id: id_list).sort_by {|o| id_list.index(o)}
>
> Kind regards
>
> robert

-- 
Posted via http://www.ruby-forum.com/.

In This Thread