Ruby, yield (, #bar), #bar, #bar. yield , Proc, yield Proc .
:
def bar
yield
end
p bar { "hello" }
p bar
uniq_by , . uniq_by?
, yield. , yield, , , . Messages.all.uniq_by { |h| h.body } { |h| h.body } uniq_by, Proc, yield Proc#call.
:
def bar
p block_given?
yield
end
bar { "hello" }
:
class Array
def uniq_by
seen = Set.new
select{ |x| seen.add?( yield( x ) ) }
end
end
class Array
def uniq_by
seen = Set.new
select{ |x| var = yield(x); seen.add?(var) }
end
end
yield
, ( ), . , yield . yield ; . yield - .