## case 1
class Symbol
def to_proc
proc { |x| x.send(self) }
end
end
p [1, 2, 3].map &:to_s
p [1, 2, 3].map &proc { |x| x*x }
puts "*" * 50
## case 2
class ProcStore
def initialize handler
@handler = handler
end
def to_proc
proc { |ele| send(@handler, ele) }
end
def hi ele
"hi #{ele}"
end
def hello ele
"hello #{ele}"
end
end
p [1, 2, 3].map &ProcStore.new(:hi)
p [1, 2, 3].map &ProcStore.new(:hello)
puts "*" * 50
## case 3
def test x
"test #{x}"
end
p [1, 2, 3].map &method(:test)
map中&后调用to_proc方法