рд╡рд┐рдХрд╛рд╕рд╛рдЪреНрдпрд╛ рдПрдХрд╛ рд╡рд░реНрд╖рд╛рдирдВрддрд░
рдореБрдЦреНрдп
- рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ
рд╕рдорд░реНрдерди рдирдореБрдирд╛ рдЬреБрд│рдгрд╛рд░реЗ (рдирдореБрдирд╛ рдЬреБрд│рдд рдЖрд╣реЗ ) рджрд┐рд▓реЗрд▓реНрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯрд╡рд░ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдХрд░рдгреЗ рдЖрдгрд┐ рдкреЕрдЯрд░реНрди рдЬреБрд│рдд рдЕрд╕рд▓реНрдпрд╛рд╕ рдореВрд▓реНрдп рдирд┐рдпреБрдХреНрдд рдХрд░рдгреЗ.рдХреЗрд╕ [0, [1, 2, 3]] [a, [b, *c]] pa #=> 0 рдордзреНрдпреЗ
pb #=> рез
pc #=> [реи, рей] рд╢реЗрд╡рдЯрдХреЗрд╕ {a: 0, b: 1}
in{a:0,x:1}
: рдЕрдиреБрдкрд▓рдмреНрдз
{a: 0, b: var} рдордзреНрдпреЗ
p var #=> 1
рд╢реЗрд╡рдЯ - рдЗрдВрдЯрд░рдПрдХреНрдЯрд┐рд╡реНрд╣ рдХреЕрд▓реНрдХреНрдпреБрд▓реЗрд╢рди irb (REPL, Read-Eval-Print-Loop) рдЪреНрдпрд╛ рд╢реЗрд▓рдордзреНрдпреЗ рдЖрддрд╛ рдорд▓реНрдЯреА-рд▓рд╛рдЗрди рд╕рдВрдкрд╛рджрдирд╛рдЪреА рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдЖрд╣реЗрдд, рдЬреА рд░реАрдбрд▓рд╛рдЗрди-рд╕реБрд╕рдВрдЧрдд рд▓рд╛рдпрдмреНрд░рд░реА рд╡рд╛рдкрд░реВрди рд▓рд╛рдЧреВ рдХреЗрд▓реА рдЖрд╣реЗ.
рд░реЗрд╖рд╛ рд░реБрдмреА рдордзреНрдпреЗ рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ. rdoc рд╕рд╛рдареА рд╕рдорд░реНрдерди рдПрдХрддреНрд░рд┐рдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ, рдЬреЗ irb рдордзреАрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╡рд░реНрдЧ, рдореЙрдбреНрдпреВрд▓ рдЖрдгрд┐ рдкрджреНрдзрддреАрдВрд╡рд░реАрд▓ рд╕рдВрджрд░реНрдн рдорд╛рд╣рд┐рддреА рдкрд╛рд╣рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ. Binding#irb рджреНрд╡рд╛рд░реЗ рджрд░реНрд╢рд╡рд┐рд▓реЗрд▓реНрдпрд╛ рдХреЛрдбрд╕рд╣ рд░реЗрд╖рд╛рдВрдЪреЗ рд░рдВрдЧреАрдд рд╣рд╛рдпрд▓рд╛рдЗрдЯрд┐рдВрдЧ рдЖрдгрд┐ рдмреЗрд╕ рдХреНрд▓рд╛рд╕ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕рдЪреА рддрдкрд╛рд╕рдгреА рдХрд░рдгреНрдпрд╛рдЪреЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд╛рди рдХреЗрд▓реЗ рдЖрд╣реЗрдд. - рдПрдХ рдХреЙрдореНрдкреЕрдХреНрдЯ рдЧрд╛рд░реНрдмреЗрдЬ рдХрд▓реЗрдХреНрдЯрд░ (рдХреЙрдореНрдкреЕрдХреНрд╢рди GC) рдЬреЛрдбрд▓рд╛ рдЬреЛ рдореЗрдорд░реАрдЪреНрдпрд╛ рдХреНрд╖реЗрддреНрд░рд╛рд▓рд╛ рдбреАрдлреНрд░реЕрдЧрдореЗрдВрдЯ рдХрд░реВ рд╢рдХрддреЛ, рдХрд╛рд╣реА рдорд▓реНрдЯреА-рдереНрд░реЗрдбреЗрдб рд░реБрдмреА рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рди рджрд░рдореНрдпрд╛рди рдореЗрдорд░реА рдлреНрд░реЕрдЧрдореЗрдВрдЯреЗрд╢рдирдореБрд│реЗ рдзреАрдореЗ рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди рдЖрдгрд┐ рд╡рд╛рдвреАрд╡ рдореЗрдорд░реА рд╡рд╛рдкрд░рд╛рдЪреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡реВ рд╢рдХрддреЛ. рдврд┐рдЧрд╛рд▒реНрдпрд╛рд╡рд░ рд╡рд╕реНрддреВ рдкреЕрдХ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА
рд╕реБрдЪрд╡рд▓реЗ GC.compact рдкрджреНрдзрдд, рдЬреА рддреБрдореНрд╣рд╛рд▓рд╛ рд╡рд╛рдкрд░рд▓реЗрд▓реНрдпрд╛ рдореЗрдорд░реА рдкреГрд╖реНрдард╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдХрдореА рдХрд░рдгреНрдпрд╛рд╕ рдЖрдгрд┐ рдСрдкрд░реЗрд╢рдиреНрд╕рд╕рд╛рдареА рдвреАрдЧ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.
CoW (рдХреЙрдкреА-рдСрди-рд░рд╛рдИрдЯ). -
рдкрд╛рд░ рдкрд╛рдбрд▓реЗ рд╕реВрдЪреА рд╕реНрдерд┐рддреА (тАЬdef foo(a,b,c)тАЭ) рдЖрдгрд┐ рдХреАрд╡рд░реНрдб (тАЬdef foo(key: val)тАЭ) рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рддрд░реНрдХ рд╡реЗрдЧрд│реЗ рдХрд░рдгреНрдпрд╛рдЪреА рддрдпрд╛рд░реА рдХрд░рдд рдЖрд╣реЗ. рдХреАрд╡рд░реНрдб рдЖрдгрд┐ рд╕реНрдерд╛рдирд╛рд╡рд░ рдЖрдзрд╛рд░рд┐рдд рд╕реНрд╡рдпрдВрдЪрд▓рд┐рдд рдпреБрдХреНрддрд┐рд╡рд╛рдж рд░реВрдкрд╛рдВрддрд░рдг рдирд╛рдкрд╕рдВрдд рдХреЗрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗ рдЖрдгрд┐ рд░реБрдмреА 3.0 рд╢рд╛рдЦреЗрдд рд╕рдорд░реНрдерд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдгрд╛рд░ рдирд╛рд╣реА. рд╡рд┐рд╢реЗрд╖рдд:, рд╢реЗрд╡рдЯрдЪрд╛ рдпреБрдХреНрддрд┐рд╡рд╛рдж рдХреАрд╡рд░реНрдб рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдореНрд╣рдгреВрди рд╡рд╛рдкрд░рдгреЗ, рдХреАрд╡рд░реНрдб-рдЖрдзрд╛рд░рд┐рдд рд╡рд┐рддрд░реНрдХрд╛рдВрдирд╛ рд╢реЗрд╡рдЯрдЪреЗ рд╣реЕрд╢ рдкреЕрд░рд╛рдореАрдЯрд░ рдореНрд╣рдгреВрди рдкрд╛рд╕ рдХрд░рдгреЗ, рдЖрдгрд┐ рд╢реЗрд╡рдЯрдЪрд╛ рдпреБрдХреНрддрд┐рд╡рд╛рдж рдкреЛрдЭрд┐рд╢рдирд▓ рдЖрдгрд┐ рдХреАрд╡рд░реНрдб рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рдордзреНрдпреЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдгреЗ рд╣реЗ рд╡рдЧрд│рд▓реЗ рдЖрд╣реЗ.def foo (рдХреА: 42); рд╢реЗрд╡рдЯ foo({key: 42}) # рдЪреЗрддрд╛рд╡рдгреА рджрд┐рд▓реА
def foo(**kw); рд╢реЗрд╡рдЯ foo({key: 42}) # рдЪреЗрддрд╛рд╡рдгреА рджрд┐рд▓реА
def foo (рдХреА: 42); рд╢реЗрд╡рдЯ foo(**{рдХреА: рекреи}) # рдареАрдХ рдЖрд╣реЗ
def foo(**kw); рд╢реЗрд╡рдЯ foo(**{рдХреА: рекреи}) # рдареАрдХ рдЖрд╣реЗdef foo(h, **kw); рд╢реЗрд╡рдЯ foo(рдХреА: 42) # рдЪреЗрддрд╛рд╡рдгреА рджрд┐рд▓реА
def foo(h, key: 42); рд╢реЗрд╡рдЯ foo(рдХреА: 42) # рдЪреЗрддрд╛рд╡рдгреА рджрд┐рд▓реА
def foo(h, **kw); рд╢реЗрд╡рдЯ foo({key: 42}) # рдареАрдХ рдЖрд╣реЗ
def foo(h, key: 42); рд╢реЗрд╡рдЯ foo({key: 42}) # рдареАрдХ рдЖрд╣реЗdef foo(h={}, рдХреА: 42); рд╢реЗрд╡рдЯ foo("key" => 43, рдХреА: 42) # рдЪреЗрддрд╛рд╡рдгреА рджрд┐рд▓реА
def foo(h={}, рдХреА: 42); рд╢реЗрд╡рдЯ foo({"key" => 43, key: 42}) # рдЪреЗрддрд╛рд╡рдгреА рджрд┐рд▓реА
def foo(h={}, рдХреА: 42); рд╢реЗрд╡рдЯ foo({"key" => 43}, рдХреА: 42) # рдареАрдХ рдЖрд╣реЗdef foo(opt={}); рд╢реЗрд╡рдЯ foo (рдХреА: 42) # рдареАрдХ рдЖрд╣реЗ
def foo(h, **nil); рд╢реЗрд╡рдЯ foo(key: 1) # ArgumentError
def foo(h, **nil); рд╢реЗрд╡рдЯ foo(**{рдХреА: 1}) # рд╡рд┐рддрд░реНрдХ рддреНрд░реБрдЯреА
def foo(h, **nil); рд╢реЗрд╡рдЯ foo("str" тАЛтАЛ=> 1) # рд╡рд┐рддрд░реНрдХ рддреНрд░реБрдЯреА
def foo(h, **nil); рд╢реЗрд╡рдЯ foo({рдХреА: 1}) # рдареАрдХ рдЖрд╣реЗ
def foo(h, **nil); рд╢реЗрд╡рдЯ foo({"str" тАЛтАЛ=> 1}) # рдареАрдХ рдЖрд╣реЗh = {}; def foo(*a) a end; foo(**h) # [] h = {}; def foo(a) a end; foo(**h) # {} рдЖрдгрд┐ рдЪреЗрддрд╛рд╡рдгреА
h = {}; def foo(*a) end; foo(h) # [{}] h = {}; def foo(a) end; foo(h) # {} -
рд╕рдВрдзреА рдмреНрд▓реЙрдХ рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕рд╕рд╛рдареА рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рдХреНрд░рдорд╛рдВрдХрд┐рдд рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ рдирд╛рд╡реЗ рд╡рд╛рдкрд░рдгреЗ.[1, 2, 3].рдкреНрд░рддреНрдпреЗрдХ { @1 рдареЗрд╡рддреЗ } # [рез, реи, рей].рдкреНрд░рддреНрдпреЗрдХ { |i| рдореА рдареЗрд╡рддреЛ }
- рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдореВрд▓реНрдпрд╛рд╢рд┐рд╡рд╛рдп рд╢реНрд░реЗрдгреАрдВрд╕рд╛рдареА рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд╕рдорд░реНрдерди.
ary[..3] # ary[0..3] rel.where(рд╡рд┐рдХреНрд░реА: ..100) рд╕рд╛рд░рдЦреЗ
- рдЧрдгрдгреНрдпрд╛рдпреЛрдЧреНрдп#рдЯреЕрд▓реА рдкрджреНрдзрдд рдЬреЛрдбрд▓реА, рдЬреА рдкреНрд░рддреНрдпреЗрдХ рдШрдЯрдХ рдХрд┐рддреА рд╡реЗрд│рд╛ рджрд┐рд╕рд▓реА рдпрд╛рдЪреА рдЧрдгрдирд╛ рдХрд░рддреЗ.
["a", "b", "c", "b"].tally
#=> {"a"=>1, "b"=>2, "c"=>1} - рд╢рд╛рдмреНрджрд┐рдХ "рд╕реНрд╡" рд╕рд╣ рдЦрд╛рдЬрдЧреА рдкрджреНрдзрдд рдХреЙрд▓ рдХрд░рдгреНрдпрд╛рдЪреА рдЕрдиреБрдорддреА рдЖрд╣реЗ
def foo
рд╢реЗрд╡рдЯ
рдЦрд╛рдЬрдЧреА :foo
self.foo - рдЖрд│рд╢реА рдкреНрд░рдЧрдгрдХ (рдЧрдгрдХ::рдЖрд│рд╢реА) рдХрдбреВрди рдирд┐рдпрдорд┐рдд рдЧрдгрди рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЧрдгрдХ::рдЖрд│рд╢реА#рдЗрдЧреЗрд░ рдкрджреНрдзрдд рдЬреЛрдбрд▓реА.
a = %w(foo bar baz)
e = a.lazy.map {|x| x.upcase }.map {|x| x + "!" }.рдЖрддреБрд░
p e.class #=> рдкреНрд░рдЧрдгрдХ
p e.map {|x| x + "?" } #=> [тАЬрдлреВ!?тАЭ, тАЬрдмрд╛рд░!?тАЭ, тАЬрдмрд╛рдЭ!?тАЭ] - рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ JIT рдХрдВрдкрд╛рдЗрд▓рд░рдЪрд╛ рд╡рд┐рдХрд╛рд╕ рдЪрд╛рд▓реВрдЪ рдЖрд╣реЗ, рдЬреЛ рд░реБрдмреА рднрд╛рд╖реЗрддреАрд▓ рдНрдкреНрд▓рд┐рдХреЗрд╢рдиреНрд╕рдЪреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддреЗрдд рд▓рдХреНрд╖рдгреАрдп рд╕реБрдзрд╛рд░рдгрд╛ рдХрд░реВ рд╢рдХрддреЛ. рд░реБрдмреАрдЪрд╛ JIT рдХрдВрдкрд╛рдЗрд▓рд░ рдкреНрд░рдердо рдбрд┐рд╕реНрдХрд╡рд░ C рдХреЛрдб рд▓рд┐рд╣рд┐рддреЛ, рдЖрдгрд┐ рдирдВрддрд░ рдорд╢реАрди рд╕реВрдЪрдирд╛ рд╡реНрдпреБрддреНрдкрдиреНрди рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдмрд╛рд╣реНрдп C рдХрдВрдкрд╛рдЗрд▓рд░рд▓рд╛ рдХреЙрд▓ рдХрд░рддреЛ (GCC, Clang, рдЖрдгрд┐ Microsoft VC++ рдХреЙрд▓ рдХрд░рдгреНрдпрд╛рд╕ рд╕рдорд░реНрдерди рджреЗрддреЛ). рдирд╡реАрди рдЖрд╡реГрддреНрддреА рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рд▓реНрдпрд╛рд╕ рдЗрдирд▓рд╛рдЗрди рдЙрдкрдпреЛрдЬрдирд╛рд╕рд╛рдареА рдкрджреНрдзрдд рд▓рд╛рдЧреВ рдХрд░рддреЗ, рд╕рдВрдХрд▓рдирд╛рджрд░рдореНрдпрд╛рди рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рдореЛрдбреНрд╕рдЪрд╛ рдирд┐рд╡рдбрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, тАЬ--рдЬрд┐рдд-рдорд┐рди-рдХреЙрд▓тАЭ рдЪреЗ рдбреАрдлреЙрд▓реНрдЯ рдореВрд▓реНрдп 5 рд╡рд░реВрди 10000 рдкрд░реНрдпрдВрдд рд╡рд╛рдврд╡рд▓реЗ тАЛтАЛрдЬрд╛рддреЗ рдЖрдгрд┐ тАЬ--jit-max- рдХреЕрд╢реЗ" 1000 рддреЗ 100 рдкрд░реНрдпрдВрдд.
- CGI.escapeHTML, Monitor рдЖрдгрд┐ MonitorMixin рдЪреЗ рд╕реБрдзрд╛рд░рд┐рдд рдХрд╛рд░реНрдпрдкреНрд░рджрд░реНрд╢рди.
- Module#name, true.to_s, false.to_s рдЖрдгрд┐ nil.to_s рд╣реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛рдд рдХреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯрд╕рд╛рдареА рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЕрд╕рд▓реЗрд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд░рдд рдЖрд▓реА рдЖрд╣реЗ.
- RubyVM::InstructionSequence#to_binary; рдкрджреНрдзрддреАрджреНрд╡рд╛рд░реЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдмрд╛рдпрдирд░реА рдлрд╛рдЗрд▓реНрд╕рдЪрд╛ рдЖрдХрд╛рд░ рдХрдореА рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛ рдЖрд╣реЗ.
- рдпрд╛рд╕рд╣ рдЕрдВрдЧрднреВрдд рдШрдЯрдХрд╛рдВрдЪреНрдпрд╛ рдЕрджреНрдпрддрдирд┐рдд рдЖрд╡реГрддреНрддреНрдпрд╛
рдмрдВрдбрд▓рд░ 2.1.2, RubyGems 3.1.2,
Racc 1.4.15,
CSV 3.1.2, REXML 3.2.3,
RSS 0.2.8,
рд╕реНрдЯреНрд░рд┐рдВрдЧрд╕реНрдХреЕрдирд░ 1.0.3; - рд▓рд╛рдпрдмреНрд░рд░реА рдмреЗрд╕ рдкреЕрдХреЗрдЬрдордзреВрди рдмрд╛рд╣реНрдп рд░рддреНрди рдкреЕрдХреЗрдЬрдордзреНрдпреЗ рд╣рд▓рд╡рд┐рдгреНрдпрд╛рдд рдЖрд▓реНрдпрд╛ рдЖрд╣реЗрдд
CMath (cmath рд░рддреНрди),
рд╕реНрдХреЕрдирдл (рд╕реНрдХреЕрдирдл рд░рддреНрди),
рд╢реЗрд▓ (рд╢реЗрд▓ рд░рддреНрди)
рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдпрдЭрд░ (рд╕рд┐рдВрдХ рд░рддреНрди),
рдереНрд░реЗрдбреНрд╕ рд╡реЗрдЯ (рдерд╡реЗрдЯ рд░рддреНрди),
E2MM (e2mmap рд░рддреНрди). - рдбреАрдлреЙрд▓реНрдЯ stdlib рдореЙрдбреНрдпреВрд▓ rubygems.org рд╡рд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд:
рдмреЗрдВрдЪрдорд╛рд░реНрдХ
cgi
рдкреНрд░рддрд┐рдирд┐рдзреА
рд▓рд╛рдВрдмрд▓рдЪрдХ,
рдиреЗрдЯ-рдкреЙрдк,
net-smtp
рдЙрдШрдбрд╛рей,
pstore,
рд╕рд┐рдВрдЧрд▓рдЯрди рдореЙрдирд┐рдЯрд░ рдореЙрдбреНрдпреВрд▓реНрд╕ rubygems.org рд╡рд░ рд╣рд▓рд╡рд▓реЗ рдирд╛рд╣реАрдд
рдирд┐рд░реАрдХреНрд╖рдХ,
рд╡реЗрд│ рд╕рдВрдкрд▓рд╛,
рдЯреНрд░реЗрд╕рд░
рдЙрд░реА,
yaml, рдЬреЗ рдлрдХреНрдд рд░реБрдмреА-рдХреЛрд░рдордзреНрдпреЗ рдкреБрд░рд╡рд▓реЗ рдЬрд╛рддреЗ. - рд░реБрдмреА рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрддрд╛ C99 рдорд╛рдирдХрд╛рдВрдирд╛ рд╕рдорд░реНрдерди рджреЗрдгрд╛рд░рд╛ C рдХрдВрдкрд╛рдЗрд▓рд░ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
рд╕реНрддреНрд░реЛрдд: opennet.ru