[#406419] Recursion with Hash — Love U Ruby <lists@...>

h = {a: {b: {c: 23}}}

14 messages 2013/04/01

[#406465] Exclusively for Rubyists, a community on Facebook — "senthil k." <lists@...>

I was surprised to know that there is no community for Ruby Programming

12 messages 2013/04/03
[#406467] Re: Exclusively for Rubyists, a community on Facebook — Marc Heiler <lists@...> 2013/04/04

Thing is, some people do not use Facebook and never will.

[#406468] Re: Exclusively for Rubyists, a community on Facebook — Aghori Shaivite <aghorishaivite@...> 2013/04/04

Yeah... but some people don't use email, or the internet, or computers. So

[#406528] Role of bundler in creating and installing a gem — Jon Cairns <lists@...>

Hi fellow rubyists,

11 messages 2013/04/05

[#406555] How do you know what the main file in Ruby Projects is? — peteV <pete0verse@...>

Hi Ruby people,

18 messages 2013/04/05
[#406558] Re: How do you know what the main file in Ruby Projects is? — "Carlo E. Prelz" <fluido@...> 2013/04/05

Subject: How do you know what the main file in Ruby Projects is?

[#406560] Re: How do you know what the main file in Ruby Projects is? — Hans Mackowiak <lists@...> 2013/04/05

Carlo E. Prelz wrote in post #1104616:

[#406562] Re: How do you know what the main file in Ruby Projects is? — "D. Deryl Downey" <me@...> 2013/04/05

Actually its not wrong. What it does is explicitly state which ruby

[#406563] Re: How do you know what the main file in Ruby Projects is? — Matt Lawrence <matt@...> 2013/04/05

On Sat, 6 Apr 2013, D. Deryl Downey wrote:

[#406564] Re: How do you know what the main file in Ruby Projects is? — Hans Mackowiak <lists@...> 2013/04/05

Matt Lawrence wrote in post #1104625:

[#406566] Re: How do you know what the main file in Ruby Projects is? — Matt Lawrence <matt@...> 2013/04/05

On Sat, 6 Apr 2013, Hans Mackowiak wrote:

[#406570] Re: How do you know what the main file in Ruby Projects is? — Matthew Mongeau <halogenandtoast@...> 2013/04/05

I'm interested in the issue with using env, but I find you explanation a but hard to follow. What are some situations that lead to the problems you are describing. I'm currently using env in some gems and if there is a strong argument against it, I don't mind switching it.

[#406600] Mapping string data ptr to buffer in ffi — se gm <lists@...>

I'm trying to implement some "shared memory" in Ruby, but I'm not sure

20 messages 2013/04/08

[#406683] confusion with Struct class — Love U Ruby <lists@...>

I went to there - http://www.ruby-doc.org/core-2.0/Struct.html but the

29 messages 2013/04/11
[#406694] Re: confusion with Struct class — Love U Ruby <lists@...> 2013/04/11

Why does every time the has value getting changed,while the instance

[#406762] Why does #content method in nokogiri not printing the full text? — Love U Ruby <lists@...>

Here is the documentation: http://www.rubydoc.info/gems/nokogiri/frames

19 messages 2013/04/14
[#406764] Re: Why does #content method in nokogiri not printing the full text? — tamouse mailing lists <tamouse.lists@...> 2013/04/14

On Sun, Apr 14, 2013 at 11:19 AM, Love U Ruby <lists@ruby-forum.com> wrote:

[#406874] Input: sentence Modify: words Output: modified sentence — Philip Parker <lists@...>

I am new to Ruby. This is a programming interview question to use any

11 messages 2013/04/19

[#406912] Tap method : good or bad practice ? — Sébastien Durand <lists@...>

Hi all !

18 messages 2013/04/21

[#406936] BEGINNER -CLASS QUERY — shaik farooq <lists@...>

HEY as we know that the object conatins the instance variables that are

22 messages 2013/04/22

[#406966] copying files syntax with FileUtils.rb (grr.) — Thomas Luedeke <lists@...>

In my Ruby scripting, there is probably no greater and chronic source of

10 messages 2013/04/23

[#406969] what is the $- magic global? — Matthew Kerwin <lists@...>

I've been searching for the past hour or so, including manually stepping

13 messages 2013/04/24

[#407059] New Rexx like data structure — Peter Hickman <peterhickman386@...>

This is just something that I have been playing with for some time but I

11 messages 2013/04/29

[#407070] writing lines to a file — peteV <pete0verse@...>

I have a text file with on every line a magic card number and such info

13 messages 2013/04/29

Re: Trying to understand blocks

From: Robert Klemme <shortcutter@...>
Date: 2013-04-12 21:52:03 UTC
List: ruby-talk #406746
On Fri, Apr 12, 2013 at 10:12 PM, Vincent Stowbunenko
<lists@ruby-forum.com>wrote:

> I am confused about what is going on with this code:
>

IMO the most important aspect to remember about this is that a block is an
anonymous function.


> def foo
>     yield("Jim")
> end
>
> def bar
>    baz = lambda { |n| n.upcase }
>    foo(&baz)
> end
>
> bar # => "JIM"
>
>
> From what I understand where this is going:
>
> 1. The method bar is being called.
>

Check.


> 2. Inside the bar method, the lambda function is being assigned to the
> baz variable, to upcase whatever is assigned to the variable n inside
> the lambda function.
>

Check.


> 3. I don't understand the use of ampersand operator associated with the
> variable baz.  Whatever that is, it is an argument for the foo method.
>

The ampersand is used in two ways: one way presented by you here at the
calling site to pass a block (or something which implements #to_proc) to a
method.  The other one is inside methods to access the block as an object:

irb(main):008:0> def f(&b) p b; yield 1; b.call(2); b[3] end
=> nil
irb(main):009:0> f {|x| printf "(%p)\n", x}
#<Proc:0x8b19358@(irb):9>
(1)
(2)
(3)
=> nil

When accessing the block as object it can be stored somewhere (e.g. in a
member variable) for later use.  That's the main advantage.

irb(main):010:0> o = Object.new
=> #<Object:0x8b265e4>
irb(main):011:0> def o.to_proc; lambda {|y| p y} end
=> nil
irb(main):012:0> f(&o)
#<Proc:0x8b3e810@(irb):11 (lambda)>
1
2
3
=> 3

#to_proc is a special mechanism which allows to pass arbitrary things as a
block, for example:

irb(main):013:0> (1..4).map(&:to_s)
=> ["1", "2", "3", "4"]

Here method #to_proc of the symbol "to_s" invoked.  It returns a block with
a single argument which invokes the method represented by the given name on
the object:

irb(main):014:0> b = :to_s.to_proc
=> #<Proc:0x8b4c4ec>
irb(main):015:0> b.call 123
=> "123"


4. Inside the foo method, it uses a yield function with an argument
> "Jim".  Somehow, the string "Jim" made it way to assign to the variable
> n, upcasing it.
>

Keyword "yield" is used to invoke a block passed to the method; since the
method does not have a name there must be a standard way to invoke it.  The
other ways I have also shown in line 1 above.

A few other aspects
http://blog.rubybestpractices.com/posts/rklemme/001-Using_blocks_for_Robustness.html
http://blog.rubybestpractices.com/posts/rklemme/002_Writing_Block_Methods.html

Kind regards

robert


-- 
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

In This Thread