[typo] Mmm... higher order code

Piers Cawley pdcawley at bofh.org.uk
Tue Mar 21 13:50:23 EST 2006


"Rob Sanheim" <rsanheim at gmail.com> writes:

> On 3/21/06, Piers Cawley <pdcawley at bofh.org.uk> wrote:
>> Mmm... I love this programming language.
>>
>> I've just written the following:
>>
>>   def perform_action_without_filters
>>     scope_hash = {:find => {:conditions => "blog_id = #{this_blog.id}"},
>>                   :create => {:blog_id => this_blog.id}}
>>     blog_scoped_model_classes.inject(lambda {super}) do |block, klass|
>>       lambda { klass.with_scope(scope_hash, &block) }
>>     end.call
>>   end
>>
>> And I fully expect it to work. Do you think I've spent to long
>> programming in lisp?
>
> Can you decipher that for those of us a bit newer to things? :)

If I tell you that the 'inject' bit is replacing something like:

  Content.with_scope(scope_hash) do
    Article.with_scope(scope_hash) do
      Comment.with_scope(scope_hash) do
        Trackback.with_scope(scope_hash) do
          super
        end
      end
    end
  end

does it help?

Other helpers: 
  lambda is roughly equivalent to Proc.new

  This: 
    foo = lambda { "Bibble" }
    some_method(&foo)
  
  is roughly equivalent to:

    some_method() {"Bibble"}

The rest is just a matter of reading the docs :)

-- 
Piers Cawley <pdcawley at bofh.org.uk>
http://www.bofh.org.uk/


More information about the Typo-list mailing list