рд░реВрдмреА рдХреА рднрд╛рд╡рдирд╛рддреНрдордХ рд╕рдореАрдХреНрд╖рд╛ 1.9

рд░реВрдмреА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рджреБрднрд╛рд╖рд┐рдпрд╛ рд╕рдВрд╕реНрдХрд░рдг 1.9 рдХреА рд░рд┐рд▓реАрдЬ рдХреЗ рдмрд╛рдж рд▓рдЧрднрдЧ рджреЛ рдорд╣реАрдиреЗ рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВред рдХрдИ рдЕрдиреНрдп рдУрдкрди рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреА рддрд░рд╣ рдпрд╣рд╛рдВ рджреВрд╕рд░реА рд╡рд┐рд╖рдо рд╕рдВрдЦреНрдпрд╛ рдХрд╛ рдЕрд░реНрде рд╣реИ, рдПрдХ рдЕрд╕реНрдерд┐рд░, рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕рдВрд╕реНрдХрд░рдг, "рдЬрдВрдЧрд▓реА рдФрд░ рдЕрдЬреАрдм" рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд┐рдЫрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╡реНрдпрдХреНрддрд┐ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдЗрди рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЕрд╡рд▓реЛрдХрди рд╣реИред рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдк рдЙрдирдХреЗ рдорд╣рддреНрд╡ рд╕реЗ рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИ (рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпреВрдирд┐рдХреЛрдб рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рд╕рдорд░реНрдерди рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЧрд╛рдпрдм рд╣реИ), рд▓реЗрдХрд┐рди рдЗрд╕ рд░реБрдЪрд┐ рд╕реЗ рдХрд┐ рд╡реЗ рд▓реЗрдЦрдХ рдореЗрдВ рдЬрдЧреЗред

рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рд╢рдмреНрджрд╛рд░реНрде рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди


рдиреЛрдЯ: рдиреАрдЪреЗ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╢рдмреНрдж рдмреНрд▓реЙрдХ рдХрд╛ рдЕрд░реНрде рд╣реИ Proc рдФрд░ lambda рджреЛрдиреЛрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ рдЗрд╕ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЕрд╡рд▓реЛрдХрди рдореЗрдВ рднреВрдорд┐рдХрд╛ рдирд╣реАрдВ рдирд┐рднрд╛рддреЗ рд╣реИрдВ, " => " рднрд╛рд╖рд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рдирд┐рд░реНрдорд╛рдг рд╡рд╛рдкрд╕ рдЖ рдЧрдпрд╛

рдмреНрд▓реЙрдХ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рдирдпрд╛ рддрд░реАрдХрд╛


fun = ->(a, b){ a + b }

рдХреЗ рдмрдЬрд╛рдп

fun = lambda{|a,b| a + b }

рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ "VERY EXPERIMENTAL" рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рд╕рдмрд╕реЗ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╡рд┐рдЪрд╛рд░реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдФрд░, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЬрдм рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдХреЛрдб рдХреЛ рдкрдврд╝рдиреЗ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рджреЗ рд╕рдХрддрд╛ рд╣реИред

рдмреНрд▓реЙрдХ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдирдпрд╛ рддрд░реАрдХрд╛


fun.(2,5)

рджреЛ рдкреБрд░рд╛рдиреЗ рддрд░реАрдХреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛:
fun.call(2,5) # 1
fun[2,5] # 2

рд╡рд┐рдзрд┐ 1 рд╕реЗ рдЫреЛрдЯреА рд╣реИ рдФрд░ 2 рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдФрд░, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣ рдПрдХ рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИред

рдкреИрд░рд╛рдореАрдЯрд░реНрд╕ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░реЗрдВ


рдмреНрд▓реЙрдХ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдЕрдм рд╕реНрдерд╛рдиреАрдп рд╣реИрдВ (рдореЗрд░реЗ рд▓рд┐рдП, рд╢рд╛рдпрдж, рд░реВрдмрд▓ рдореЗрдВ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рд░реЗрдХ)ред рдЕрдм рдпрд╣ (1.8 рдХреЗ рд▓рд┐рдП рдХреЛрдб) рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ:
i = 42
10.times{|i| puts i }
i
=> 10

i рдХрд╛ рдорд╛рди 42 рд░рд╣реЗрдЧрд╛ред рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдорддрд▓рдм 1.8 рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрддрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рд╕реНрдерд┐рд░ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЕрдкрдирд╛рдпрд╛ рдЬрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рдирдП рддрд░реАрдХреЗ


with_index


Enumerator рдкрд╛рд╕ рдПрдХ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА with_index рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп Enumerator рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╕рдорд╛рди рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд░реНрдХ рднреА рджреЗрддрд╛ рд╣реИ - рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХреЛрдб рдПрдХ рд╕рд░рдгреА рд╕реЗ рд╣рд░ рддреАрд╕рд░реЗ рддрддреНрд╡ рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ:
[1,3,4,6,5,6].select.with_index{|v,i| (i+1)%3 == 0 }
=> [4, 6]

рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдорд╛рдгрд┐рдХ рдХреА рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рдЪрд╛рд░рдзрд╛рд░рд╛ рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕рд╣рдордд рд╣реИ, each_with_index рдЬреИрд╕реЗ рд╡рд┐рд╢реЗрд╖ рддрд░реАрдХреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓реВрдк рдЪрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рддрд╛ рд╣реИред

рдЯрд╛рдЗрдо рдФрд░ рдЗрдВрдЯреЗрдЧрд░ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди


рд╕рдордп рдиреЗ рд╕рд╛рдд рдирдП рддрд░реАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЬреЛ рд░реВрдмреА рд╢реИрд▓реА рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рдлрд┐рдЯ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдХреМрди - рдХреМрди рд▓реЛрдЧ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдорд╛рдгрд┐рдХ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
Time.now.sunday?
=> false
Time.now.thursday?
=> true

рдЗрд╕реА рддрд░рд╣ рд╕реЗ odd? рддрд░реАрдХреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ odd? рдФрд░ even?
1.odd?
=> true
3.even?
=> false

nil? рд╡рд┐рдзрд┐рдпреЛрдВ рд╡рд╛рд▓реА рднрд╛рд╖рд╛ рдХрд╛ рддрд╛рд░реНрдХрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ nil? рдФрд░ zero? ред

рдкреНрд░рддреАрдХ # to_proc


рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдкреНрд░рддреАрдХ рдЕрдм рдЗрд╕реЗ рдПрдХ рдмреНрд▓реЙрдХ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдм рдЖрдк рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ:
["one", "two", "three"].map(&:capitalize)
=> ["One", "Two", "Three"]

рдпрд╣, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрддрд┐рд░рд┐рдХреНрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛрдб рдХреЗ рд╕рд╛рдеред

рдореИрдВ рджреЛрд╣рд░рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдорд╛рдгрд┐рдХ рдХреЗ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕рдВрд╕реНрдХрд░рдг рдХреА рд╕рдореАрдХреНрд╖рд╛ рдереА, рдЬрд┐рд╕ рдкрд░ рд╕рдореАрдХреНрд╖рд╛ рдореЛрдЯреЗ рддреМрд░ рдкрд░ рд╕рдВрд╕реНрдХрд░рдг 2.0 рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХрд░реЗрдЧреАред рдпрд╣ рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рд╣реИ рдХрд┐ рдпрд╣ рддреЗрдЬ, рдЫреЛрдЯрд╛, рд╕реБрд░рдХреНрд╖рд┐рдд, рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред

рдкрд░рд┐рд╡рд░реНрддрди рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдпрд╣рд╛рдВ рдЖрдк рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред

Source: https://habr.com/ru/post/In20979/


All Articles