###7.Lambdas and Blocks ####7.1 Lambdas in Ruby
a lambda is just a function peculiarly(特别的) without a name
lambda 就是个匿名函数 lambdas in ruby are also objects
the last expression of a lambda is its return value
 say = lambda { "To Be Or Not To Be" }
 puts say.call      #To Be Or Not To Be
lambda 可以接收参数
say  = lambda do |str|
    if str == "HaHaHa"
        return str
    else
        return "No Arguments"
    end
end
puts say.call("HaHaHa") #HaHaHa
say  = lambda do |str=nil|
    if str
        return str
    else
        return "No Arguments"
    end
end
puts say.call() #No Arguments
puts say.call("Ha") #Ha
####7.2 Blocks in Ruby
 The simplest explanation for a block is that it is a piece of code that can't be stored in a variable and isn't an object.
def add(number)
    yield(number)
end
add(2) {|num| num+1}            #3
带block参数
def add(num, &block)
    if block
        yield(num)
    else
        num * 3
    end
end
add(2)                          #6
add(2) {|num| num + 1 }         #3
