User.all.map &:name #
рдХреЗ рдмрдЬрд╛рдп
User.all.map { |user| user.name }
рдкрд╣рд▓реЗ рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдиреНрдпреВрдореЗрд░реЗрдЯреЗрдб рд╡рд░реНрдЧреЛрдВ рдХреА рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИред
рдЬрд╛рджреВ # 1ред
рдЬрдм рд░реВрдмреА рдПрдХ рд╡рд┐рдзрд┐ рдХреЙрд▓ рдХреЗ рдЕрдВрддрд┐рдо рддрд░реНрдХ рдореЗрдВ рдПрдХ рдПрдореНрдкрд░рд╕реЗрдВрдб (рдФрд░) рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреА рд╣реИ,
рдлрд┐рд░ рдЗрд╕реЗ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдХреЛрдб рдмреНрд▓реЙрдХ (рдкреНрд░реЛрдХ) рдореЗрдВ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
a = (1..10).to_a a.map { |n| n*n } # => [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] l = lambda { |n| n*n } a.map &l # => [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
рдЬрд╛рджреВ # 2ред
рдЬрдм рд░реВрдмреА рдПрдХ рдПрдореНрдкрд░рд╕реЗрдВрдб рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреА рд╣реИ, рддреЛ рдпрд╣ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ #to_proc рд╡рд┐рдзрд┐ рд╕реЗ рдХреЙрд▓ рдХрд░рдХреЗ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдмреНрд▓реЙрдХ рдореЗрдВ рдмрджрд▓ рджреЗрддреА рд╣реИред
рдФрд░ рдпрд╣рд╛рдБ рд╡рд╣ рдореБрдЦреНрдп рдЖрд╢реНрдЪрд░реНрдп рд╣реИ, #to_proc рдХреЛ рд╕рд┐рдВрдмрд▓ рдкрд░ рдХреЙрд▓ рдХрд░рдирд╛, рд╣рдореЗрдВ рдХреЛрдб рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдмреНрд▓реЙрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ:
lambda { |x| x.send(self) }
рдпрд╣реА рд╣реИ, Symbol # to_proc рдареАрдХ рдЙрд╕реА рдмреНрд▓реЙрдХ рдХреЛ рд▓реМрдЯрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ рдЙрд╕рд╕реЗ рдЙрдореНрдореАрдж рдереА, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рд░реВрдк рдореЗрдВ рдкреНрд░рддреАрдХ рд╡рд░реНрдЧ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред
рдпреБрдкреАрдбреАред primerchik
рдпрд╣ рдкреНрд░рддреАрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ, рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрджреНрднреБрдд рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ:
:upcase.to_proc.call "asdad" # => "ASDAD"
рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рдордЧреНрд░реА
blog.hasmanythrough.com/2006/3/7/symbol-to-proc-shorthand
weblog.raganwald.com/2008/06/what-does-do-when-used-as-unary.html
en.wikibooks.org/wiki/Ruby_Programming/Syntax/Method_Calls#The_ampersand_.28.26.29
m.onkey.org/let-s-start-with-wtf