ืืืืจ ืฉื ื ืฉื ืคืืชืื
ืืขืืงืจื
- ื ึดืกืืึนื ึดื
ืืชืืื ืืชืืืช ืชืื ืืช (ืืชืืืช ืชืื ืืช ), ืืืืคืฉืจืื ืื ืืืืืจ ืขื ืืืืืืงื ื ืชืื ืืืืงืฆืืช ืขืจื ืื ืืฉ ืืชืืื ืืชืื ืืช.ืืงืจื [0, [1, 2, 3]] ื-[a, [b, *c]] pa #=> 0
pb #=> 1
pc #=> [2, 3] ืกืืฃืืงืจื {a: 0, b: 1}
ื-{a: 0, x: 1}
:ืืื ื ืืืื
ื-{a: 0, b: var}
p var #=> 1
ืกืืฃ - ืืขืืคืช ืืืืฉืืืื ืืืื ืืจืืงืืืืืื irb (REPL, Read-Eval-Print-Loop) ืืืืืช ืืขืช ืขืจืืื ืืจืืืช ืฉืืจืืช, ืืืืืฉืืช ืืืืฆืขืืช ืกืคืจืืื ืชืืืืช ืงื-ืงืจืืื
ืืืชืืกืก , ืืชืื ืืจืืื. ืชืืืืช rdoc ืฉืืืื, ืืืืคืฉืจืช ืื ืืืฆืื ืืืืข ืืชืืืืกืืช ืขื ืืืืงืืช, ืืืืืืื ืืฉืืืืช ืฉืฆืืื ื ื-irb. ืกืืคืงื ืืืืฉืช ืฆืืข ืฉื ืฉืืจืืช ืงืื ืืืืฆืืืช ืืจื Binding#irb ืืชืืฆืืืช ืืืืืงื ืฉื ืืืืืืงืืื ืืืืชื ืืืกืืกืืช. - ื ืืกืฃ ืืกืคื ืืฉืคื ืงืืืคืงืื (Compaction GC) ืฉืืืื ืืืืืช ืืืืจ ืืืืจืื, ืืืคืชืืจ ืืช ืืขืืืช ืืืืฆืืขืื ืืฆืจืืืช ืืืืืจืื ืื ืืจืืืช ืขื ืืื ืคืืฆืื ืืืืจืื ืืืชืจืืฉ ืืืืง ืืืืฉืืื Ruby ืืจืืื ืืืืื. ืืืจืื ืืคืฆืื ืขื ืืขืจืืื
ืืึผืฆึธืข ืฉืืืช GC.compact, ืืืืคืฉืจืช ืื ืืฆืืฆื ืืช ืืกืคืจ ืืคื ืืืืืจืื ืืฉืืืืฉ ืืืืืขื ืืช ืืขืจืืื ืืคืขืืืืช
CoW (ืืขืชืง ืขื ืืชืืื). -
ืืืฆืข ืืชืืื ื ืื ืืืคืจืืช ืืจืืืื ืืื ืขื ืกืื ืืืงืื ืจืฉืืื ("def foo(a,b,c)") ืืืืืืช ืืคืชื ("def foo(key: val)"). ืืืจืช ืืจืืืื ืืื ืืืืืืืืช ืืืืืกืกืช ืขื ืืืืืช ืืคืชื ืืืืงืื ืืืฆืื ืืฉืืืืฉ ืืื ืชืืื ื ืชืืืช ืืกื ืืฃ Ruby 3.0. ืืืืคื ืกืคืฆืืคื, ืืื ืืืฆืื ืืฉืืืืฉ ืืช ืืืจืืืื ื ืืืืจืื ืืคืจืืืจืื ืฉื ืืืืช ืืคืชื, ืืขืืจืช ืืจืืืื ืืื ืืืืกืกื ืืืืช ืืคืชื ืืคืจืืืจ ื-hash ืืืืจืื, ืืคืืฆืื ืืืจืืืื ื ืืืืจืื ืืคืจืืืจืื ืืืงืืืืื ืืืืืืช ืืคืชื.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(ืืคืชื: 42) # ืืืืืจ
def foo(h, ืืคืชื: 42); ืกืึนืฃ; foo(ืืคืชื: 42) # ืืืืืจ
def foo(h, **kw); ืกืึนืฃ; foo({ืืคืชื: 42}) # ืืกืืจ
def foo(h, ืืคืชื: 42); ืกืึนืฃ; foo({ืืคืชื: 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(ืืคืชื: 1) #ArgumentError
def foo(h, **nil); ืกืึนืฃ; foo(**{key: 1}) # ArgumentError
def foo(h, **nil); ืกืึนืฃ; foo("str"=> 1) # ArgumentError
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) a end; foo(h) # [{}] h = {}; def foo(a) a end; foo(h) # {} -
ืืืืื ืืช ืฉืืืืฉ ืืฉืืืช ืืฉืชื ืื ืืืืกืคืจืื ืืืจืืจืช ืืืื ืขืืืจ ืคืจืืืจื ืืืืง.[1, 2, 3].each { ืืื ืืก @1 } # ืืื ื-[1, 2, 3].each { |i| ืฉื ืื ื}
- ืชืืืื ื ืืกืืื ืืช ืืืืืืื ืืื ืขืจื ืืชืืืชื.
ary[..3] # ืืืื ื-ary[0..3] rel.where(ืืืืจืืช: ..100)
- ื ืืกืคื ืฉืืืช Enumerable#tally, ืืกืืคืจืช ืืช ืืกืคืจ ืืคืขืืื ืฉืื ืืืื ื ืืชืจืืฉ.
["ื", "ื", "ื", "ื"]
#=> {โaโ=>1, โbโ=>2, โcโ=>1} - ืืืชืจ ืืงืจืื ืืฉืืื ืคืจืืืช ืขื ื"ืขืฆืื" ืืืืืืื
def foo
ืกืืฃ
ืคืจืื :foo
self.foo - ื ืืกืคื ืฉืืื ืืื ื::ืขืฆื#ืืืื ืืืฆืืจ ืกืคืืจื ืงืืืขื ืืืื ื ืขืฆืื (Enumerator::ืขืฆืื).
a = %w(foo bar baz)
e = a.lazy.map {|x| x.upcase }.map {|x| x + "!" }.ืึธืืึผื
p e.class #=> ืืื ื
p e.map {|x| x + "?" } #=> ["FOO!?", "BAR!?", "BAZ!?"] - ืืคืืชืื ืฉื ืืืืจ JIT ื ืืกืืื ื ื ืืฉื, ืฉืืืื ืืฉืคืจ ืืฉืืขืืชืืช ืืช ืืืืฆืืขืื ืฉื ืืืฉืืืื ืืฉืคืช Ruby. ืืืืจ JIT ืฉื ืจืืื ืืืชื ืชืืืื ืงืื C ืืืืกืง, ืืืืืจ ืืื ืงืืจื ืืืืืจ C ืืืฆืื ื ืืื ืืืฆืืจ ืืืจืืืช ืืืื ื (ืชืืื ืืงืจืืื ื-GCC, Clang ื-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; ืืืคืืช.
- ืืจืกืืืช ืืขืืืื ืืช ืฉื ืจืืืืื ืืืื ืื, ืืืื
Bundler 2.1.2, RubyGems 3.1.2,
Racc 1.4.15,
CSV 3.1.2, REXML 3.2.3,
RSS 0.2.8,
StringScanner 1.0.3; - ืกืคืจืืืช ืืืขืืจื ืืืืืืช ืืืกืืก ืืืืืืืช ืืื ื ืื ืืืฆืื ืืืช
CMath (ืคื ืื ื ืฉื cmath),
Scanf (Scanf gem),
ืืขืืคืช (ืคื ืื ื ืฉื ืืขืืคืช)
ืกื ืืจืื (ืคื ืื ื ืกื ืืจืื),
ThreadsWait (ืื ืื),
E2MM (ืคื ืื ื e2mmap). - ืืืืืื ืืจืืจืช ืืืืื ืฉื stdlib ืืชืคืจืกืืื ืืืชืจ rubygems.org:
ืืืช ืืืื,
cgi,
ื ึธืฆึดืื,
getoptlong,
ืจืฉืช ืคืืค,
net-smtp
ืคืชืื 3,
pstore,
ืงึฐืึธืฃ ืึผืึนืึตื. ืืืืืื ืืื ืืืืจ ืื ืืืขืืจื ืื rubygems.org
ืึทืฉืืงึดืืฃ
ืคืกืง ืืื
ื ืืชื,
ืฉืึดื ืึธื,
yaml, ืฉืืกืืคืงืื ืจืง ื-ruby-core. - ืื ืืืช Ruby ืืืจืฉืช ืืขืช ืืืืจ C ืืชืืื ืืชืงื C99.
ืืงืืจ: OpenNet.ru