рд╡рд┐рдХрд╛рд╕рдХреЛ рдПрдХ рд╡рд░реНрд╖ рдкрдЫрд┐
рдореБрдЦреНрдп
- рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ
рд╕рдорд░реНрдерди рдврд╛рдБрдЪрд╛ рдорд┐рд▓рд╛рди (рдврд╛рдБрдЪрд╛ рдорд┐рд▓рд╛рди ), рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рджрд┐рдЗрдПрдХреЛ рд╡рд╕реНрддреБрдорд╛ рджреЛрд╣реЛрд░реНрдпрд╛рдЙрди рд░ рдврд╛рдБрдЪрд╛рд╕рдБрдЧ рдорд┐рд▓реНрджреЛ рдЫ рднрдиреЗ рдорд╛рди рддреЛрдХреНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫредрдХреЗрд╕ [0, [1, 2, 3]] [a, [b, *c]] pa #=> 0 рдорд╛
pb #=> рез
pc #=> [реи, рей] рдЕрдиреНрддреНрдпрдХреЗрд╕ {a: 0, b: 1}
{a: 0, x: 1} рдорд╛
: рдкрд╣реБрдБрдЪрдпреЛрдЧреНрдп
{a: 0, b: var} рдорд╛
p var #=> рез
рдЕрдиреНрдд - рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рдЧрдгрдирд╛ 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(**{key: 42}) # рдареАрдХ рдЫ
def foo (** kw); рдЕрдиреНрддреНрдп; foo(**{key: 42}) # рдареАрдХ рдЫdef foo (h, ** kw); рдЕрдиреНрддреНрдп; foo(key: 42) # рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдИрдпреЛ
def foo (h, рдХреБрдЮреНрдЬреА: 42); рдЕрдиреНрддреНрдп; foo(key: 42) # рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдИрдпреЛ
def foo (h, ** kw); рдЕрдиреНрддреНрдп; foo({key: 42}) # рдареАрдХ рдЫ
def foo (h, рдХреБрдЮреНрдЬреА: 42); рдЕрдиреНрддреНрдп; foo({key: 42}) # рдареАрдХ рдЫdef foo(h={}, рдХреБрдЮреНрдЬреА: 42); рдЕрдиреНрддреНрдп; foo("key" => 43, key: 42) # рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЗрдпреЛ
def foo(h={}, рдХреБрдЮреНрдЬреА: 42); рдЕрдиреНрддреНрдп; foo({"key" => 43, key: 42}) # рдЪреЗрддрд╛рд╡рдиреА рджрд┐рдЗрдпреЛ
def foo(h={}, рдХреБрдЮреНрдЬреА: 42); рдЕрдиреНрддреНрдп; foo({"key" => 43}, key: 42) # рдареАрдХ рдЫdef foo(opt={}); рдЕрдиреНрддреНрдп; foo (рдХреБрдЮреНрдЬреА: 42) # рдареАрдХ рдЫ
def foo (h, ** рд╢реВрдиреНрдп); рдЕрдиреНрддреНрдп; foo(key: 1) #ArgumentError
def foo (h, ** рд╢реВрдиреНрдп); рдЕрдиреНрддреНрдп; foo(**{key: 1}) # ArgumentError
def foo (h, ** рд╢реВрдиреНрдп); рдЕрдиреНрддреНрдп; foo("str" тАЛтАЛ=> 1) # ArgumentError
def foo (h, ** рд╢реВрдиреНрдп); рдЕрдиреНрддреНрдп; foo({key: 1}) # рдареАрдХ рдЫ
def foo (h, ** рд╢реВрдиреНрдп); рдЕрдиреНрддреНрдп; foo({"str" тАЛтАЛ=> 1}) # рдареАрдХ рдЫh = {}; def foo(*a) a end; foo(**h) # [] h = {}; def foo(a) a end; foo(**h) # {} рд░ рдЪреЗрддрд╛рд╡рдиреА
h = {}; def foo (*a) рдЕрдиреНрддреНрдп; foo(h) # [{}] h = {}; def foo (a) рдЕрдиреНрддреНрдп; foo(h) # {} -
рдЕрд╡рд╕рд░ рдмреНрд▓рдХ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдирдореНрдмрд░ рдЧрд░рд┐рдПрдХреЛ рдЪрд░ рдирд╛рдорд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИред[рез, реи, рей]редрдкреНрд░рддреНрдпреЗрдХ { @1 рд░рд╛рдЦреНрдЫ } # рдЙрд╕реНрддреИ [рез, реи, рей]редрдкреНрд░рддреНрдпреЗрдХ { |i| рд░рд╛рдЦреНрдЫреБ }
- рдкреНрд░рд╛рд░рдореНрднрд┐рдХ рдорд╛рди рдмрд┐рдирд╛ рджрд╛рдпрд░рд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд╕рдорд░реНрдердиред
ary[..3] # ary [0..3] rel.where (рдмрд┐рдХреНрд░реА: ..100) рд╕рдБрдЧ рдорд┐рд▓реНрджреЛрдЬреБрд▓реНрджреЛ
- рдЧрдгрдирдпреЛрдЧреНрдп #tally рд╡рд┐рдзрд┐ рдердкрд┐рдпреЛ, рдЬрд╕рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рджреЗрдЦрд╛ рдкрд░реЗрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдЧрдгрдирд╛ рдЧрд░реНрджрдЫред
["a", "b", "c", "b"].tally
#=> {"a"=>1, "b"=>2, "c"=>1} - рд╢рд╛рдмреНрджрд┐рдХ "рд╕реНрд╡" рдХреЛ рд╕рд╛рде рдПрдХ рдирд┐рдЬреА рд╡рд┐рдзрд┐ рдХрд▓ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдЗрдПрдХреЛ
def foo
рдЕрдиреНрдд
рдирд┐рдЬреА: foo
self.foo - рдердкрд┐рдПрдХреЛ рдЧрдгрдХ::Lazy#eager рд╡рд┐рдзрд┐ рдЕрд▓реНрдЫреА рдЧрдгрдирд╛рдХрд░реНрддрд╛ (рдЧрдгрдХ::Lazy) рдмрд╛рдЯ рдирд┐рдпрдорд┐рдд рдЧрдгрдирд╛ рдЙрддреНрдкрдиреНрди рдЧрд░реНрдиред
a = %w (foo bar baz)
e = a.lazy.map {|x| x.upcase }.рдирдХреНрд╕рд╛ {|x| x + "!" }. рдЙрддреНрд╕реБрдХ
p e.class #=> рдЧрдгрдирд╛рдХрд░реНрддрд╛
p e.map {|x| x + "?" } #=> [тАЬFOO!?тАЭ, тАЬBAR!?тАЭ, тАЬBAZ!?тАЭ] - рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ JIT рдХрдореНрдкрд╛рдЗрд▓рд░рдХреЛ рд╡рд┐рдХрд╛рд╕ рдЬрд╛рд░реА рдЫ, рдЬрд╕рд▓реЗ рд░реВрдмреА рднрд╛рд╖рд╛рдорд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрдХреЛ рдкреНрд░рджрд░реНрд╢рдирд▓рд╛рдИ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд░реВрдкрдорд╛ рд╕реБрдзрд╛рд░ рдЧрд░реНрди рд╕рдХреНрдЫред рд░реБрдмреАрдХреЛ JIT рдХрдореНрдкрд╛рдЗрд▓рд░рд▓реЗ рдкрд╣рд┐рд▓реЗ рдбрд┐рд╕реНрдХрдорд╛ C рдХреЛрдб рд▓реЗрдЦреНрдЫ, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдореЗрд╕рд┐рди рдирд┐рд░реНрджреЗрд╢рдирд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рдмрд╛рд╣реНрдп C рдХрдореНрдкрд╛рдЗрд▓рд░рд▓рд╛рдИ рдХрд▓ рдЧрд░реНрдЫ (рдЬреАрд╕реАрд╕реА, рдХреНрд▓реНрдпрд╛рдЩреНрдЧ, рд░ Microsoft VC++ рдХрд▓ рдЧрд░реНрди рд╕рдорд░реНрдерди рдЧрд░реНрджрдЫ)ред рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдгрд▓реЗ рдЖрд╡рд╢реНрдпрдХ рднрдПрдорд╛ рдЗрдирд▓рд╛рдЗрди рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рдзрд┐ рд▓рд╛рдЧреВ рдЧрд░реНрджрдЫ, рд╕рдВрдХрд▓рдирдХреЛ рдХреНрд░рдордорд╛ рдЕрдкреНрдЯрд┐рдорд╛рдЗрдЬреЗрд╕рди рдореЛрдбрд╣рд░реВрдХреЛ рдЫрдиреМрдЯ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫ, "--jit-min-calls" рдХреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рди 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; рд╡рд┐рдзрд┐рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдмрд╛рдЗрдирд░реА рдлрд╛рдЗрд▓рд╣рд░реВрдХреЛ рдЖрдХрд╛рд░ рдШрдЯрд╛рдЗрдПрдХреЛ рдЫред
- рдмрд┐рд▓реНрдЯ-рдЗрди рдХрдореНрдкреЛрдиреЗрдиреНрдЯрд╣рд░реВрдХреЛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ, рд╕рд╣рд┐рдд
рдмрдиреНрдбрд▓рд░ реи.рез.реи, рд░реБрдмреАрдЬреЗрдореНрд╕ рей.рез.реи,
Racc 1.4.15,
CSV 3.1.2, REXML 3.2.3,
RSS реж.реи.рео,
StringScanner 1.0.3; - рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрд▓рд╛рдИ рдЖрдзрд╛рд░ рдкреНрдпрд╛рдХреЗрдЬрдмрд╛рдЯ рдмрд╛рд╣реНрдп рд░рддреНрди рдкреНрдпрд╛рдХреЗрдЬрд╣рд░реВрдорд╛ рд╕рд╛рд░рд┐рдПрдХреЛ рдЫ
CMath (cmath рд░рддреНрди),
Scanf (scanf рд░рддреНрди),
рд╢реЗрд▓ (рд╢реЗрд▓ рдордгрд┐)
рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд░ (рд╕рд┐рдВрдХ рдордгрд┐),
рдереНрд░реЗрдбреНрд╕ рд╡реЗрдЯ (рдерд╡реЗрдЯ рдордгрд┐),
E2MM (e2mmap рд░рддреНрди)ред - рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд stdlib рдореЛрдбреНрдпреБрд▓рд╣рд░реВ rubygems.org рдорд╛ рдкреНрд░рдХрд╛рд╢рд┐рдд рдЫрдиреН:
рдмреЗрдиреНрдЪрдорд╛рд░реНрдХ,
cgi,
рдкреНрд░рддрд┐рдирд┐рдзрд┐
рд▓рд╛рдореЛ рд╕рдордпрд╕рдореНрдо,
рдиреЗрдЯ-рдкрдк,
net-smtp
рдЦреБрд▓рд╛ рей,
pstore,
рд╕рд┐рдВрдЧрд▓рдЯрдиред рдореЛрдирд┐рдЯрд░ рдореЛрдбреНрдпреБрд▓рд╣рд░реВ rubygems.org рдорд╛ рд╕рд╛рд░рд┐рдпреЛ
рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ,
рд╕рдордп рд╕рдХрд┐рдпреЛ
рдЯреНрд░реЗрд╕рд░
рдЙрд░реА,
yaml, рдЬреБрди рд░реБрдмреА-рдХреЛрд░рдорд╛ рдорд╛рддреНрд░ рдкреНрд░рджрд╛рди рдЧрд░рд┐рдиреНрдЫред - рд░реБрдмреА рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдЕрдм C99 рдорд╛рдирдХрд▓рд╛рдИ рд╕рдорд░реНрдерди рдЧрд░реНрдиреЗ C рдХрдореНрдкрд╛рдЗрд▓рд░ рдЪрд╛рд╣рд┐рдиреНрдЫред
рд╕реНрд░реЛрдд: opennet.ru