Ruby แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒœแƒ˜แƒก แƒ’แƒแƒ›แƒแƒจแƒ•แƒ”แƒ‘แƒ 2.7.0

แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒ แƒ—แƒ˜ แƒฌแƒšแƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’ แƒ’แƒแƒ›แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ ั€ะตะปะธะท แƒ แƒฃแƒ‘แƒ˜ XXX, แƒ“แƒ˜แƒœแƒแƒ›แƒ˜แƒฃแƒ แƒ˜ แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ–แƒ” แƒแƒ แƒ˜แƒ”แƒœแƒขแƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒœแƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒซแƒแƒšแƒ˜แƒแƒœ แƒ”แƒคแƒ”แƒฅแƒขแƒฃแƒ แƒ˜แƒ แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒก แƒจแƒ”แƒ›แƒฃแƒจแƒแƒ•แƒ”แƒ‘แƒแƒจแƒ˜ แƒ“แƒ แƒแƒ”แƒ แƒ—แƒ˜แƒแƒœแƒ”แƒ‘แƒก Perl, Java, Python, Smalltalk, Eiffel, Ada แƒ“แƒ Lisp-แƒ˜แƒก แƒกแƒแƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ แƒ›แƒแƒฎแƒแƒกแƒ˜แƒแƒ—แƒ”แƒ‘แƒšแƒ”แƒ‘แƒก. แƒžแƒ แƒแƒ”แƒฅแƒขแƒ˜แƒก แƒ™แƒแƒ“แƒ˜ แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ BSD ("2-แƒžแƒฃแƒœแƒฅแƒขแƒ˜ BSDL") แƒ“แƒ "Ruby" แƒšแƒ˜แƒชแƒ”แƒœแƒ–แƒ˜แƒ”แƒ‘แƒ˜แƒก แƒฅแƒ•แƒ”แƒจ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ”แƒฎแƒ”แƒ‘แƒ GPL แƒšแƒ˜แƒชแƒ”แƒœแƒ–แƒ˜แƒ˜แƒก แƒฃแƒแƒฎแƒšแƒ”แƒก แƒ•แƒ”แƒ แƒกแƒ˜แƒแƒก แƒ“แƒ แƒกแƒ แƒฃแƒšแƒแƒ“ แƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒแƒ“แƒ˜แƒ GPLv3-แƒ—แƒแƒœ. Ruby 2.7 แƒแƒ แƒ˜แƒก แƒ›แƒ”แƒจแƒ•แƒ˜แƒ“แƒ” แƒซแƒ˜แƒ แƒ˜แƒ—แƒแƒ“แƒ˜ แƒ’แƒแƒ›แƒแƒจแƒ•แƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒ–แƒแƒ“แƒ“แƒ”แƒ‘แƒ แƒ แƒแƒ’แƒแƒ แƒช แƒ“แƒแƒ’แƒ”แƒ’แƒ›แƒ˜แƒšแƒ˜ แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ˜แƒก แƒžแƒ แƒแƒชแƒ”แƒกแƒ˜แƒก แƒœแƒแƒฌแƒ˜แƒšแƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒแƒ˜แƒชแƒแƒ•แƒก แƒ”แƒ แƒ—แƒ˜ แƒฌแƒšแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒแƒก แƒคแƒฃแƒœแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ“แƒ 2-3 แƒ—แƒ•แƒ˜แƒก แƒžแƒแƒขแƒฉแƒ˜แƒก แƒ’แƒแƒ›แƒแƒจแƒ•แƒ”แƒ‘แƒแƒก.

แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ’แƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒ”แƒ‘แƒ”แƒ‘แƒ˜:

  • แƒ”แƒฅแƒกแƒžแƒ”แƒ แƒ˜แƒ›แƒ”แƒœแƒขแƒฃแƒšแƒ˜ แƒ›แƒฎแƒแƒ แƒก แƒ•แƒฃแƒญแƒ”แƒ แƒ— แƒœแƒ˜แƒ›แƒฃแƒจแƒ˜แƒก แƒจแƒ”แƒกแƒแƒขแƒงแƒ•แƒ˜แƒกแƒ˜ (แƒจแƒแƒ‘แƒšแƒแƒœแƒ˜แƒก แƒจแƒ”แƒกแƒแƒขแƒงแƒ•แƒ˜แƒกแƒ˜) แƒ’แƒแƒ˜แƒ›แƒ”แƒแƒ แƒแƒก แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒš แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ–แƒ” แƒ“แƒ แƒ›แƒ˜แƒแƒœแƒ˜แƒญแƒแƒก แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ, แƒ—แƒฃ แƒแƒ แƒกแƒ”แƒ‘แƒแƒ‘แƒก แƒœแƒ˜แƒ›แƒฃแƒจแƒ˜แƒก แƒจแƒ”แƒกแƒแƒขแƒงแƒ•แƒ˜แƒกแƒ˜.

    แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ [0, [1, 2, 3]] [a, [b, *c]] pa #=> 0-แƒจแƒ˜
    pb #=> 1
    pc #=> [2, 3] แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜

    แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒ {a: 0, b: 1}
    in{a:0,x:1}
    : แƒ›แƒ˜แƒฃแƒฌแƒ•แƒ“แƒแƒ›แƒ”แƒšแƒ˜แƒ
    {a: 0, b: var}-แƒจแƒ˜
    p var #=> 1
    แƒ‘แƒแƒšแƒ

  • irb แƒ˜แƒœแƒขแƒ”แƒ แƒแƒฅแƒขแƒ˜แƒฃแƒšแƒ˜ แƒ’แƒแƒ›แƒแƒ—แƒ•แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒกแƒก (REPL, Read-Eval-Print-Loop) แƒแƒฎแƒšแƒ แƒแƒฅแƒ•แƒก แƒ›แƒ แƒแƒ•แƒแƒš แƒกแƒขแƒ แƒ˜แƒฅแƒแƒœแƒ˜แƒแƒœแƒ˜ แƒ แƒ”แƒ“แƒแƒฅแƒขแƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ, แƒ’แƒแƒœแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜ Readline-แƒ—แƒแƒœ แƒ—แƒแƒ•แƒกแƒ”แƒ‘แƒแƒ“แƒ˜ แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—. แƒ’แƒแƒ“แƒแƒ“แƒ’แƒแƒ›แƒแƒ แƒฃแƒ‘แƒ˜แƒจแƒ˜ แƒ“แƒแƒฌแƒ”แƒ แƒ˜แƒšแƒ˜. แƒ˜แƒœแƒขแƒ”แƒ’แƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜แƒ rdoc-แƒ˜แƒก แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒ’แƒแƒซแƒšแƒ”แƒ•แƒ— แƒœแƒแƒฎแƒแƒ— แƒกแƒแƒชแƒœแƒแƒ‘แƒแƒ แƒ แƒ˜แƒœแƒคแƒแƒ แƒ›แƒแƒชแƒ˜แƒ แƒ›แƒ˜แƒ—แƒ˜แƒ—แƒ”แƒ‘แƒฃแƒš แƒ™แƒšแƒแƒกแƒ”แƒ‘แƒ–แƒ”, แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒกแƒ แƒ“แƒ แƒ›แƒ”แƒ—แƒแƒ“แƒ”แƒ‘แƒ–แƒ” irb-แƒจแƒ˜. แƒ›แƒแƒชแƒ”แƒ›แƒฃแƒšแƒ˜แƒ แƒฎแƒแƒ–แƒ”แƒ‘แƒ˜แƒก แƒคแƒ”แƒ แƒแƒ“แƒ˜ แƒฎแƒแƒ–แƒ’แƒแƒกแƒ›แƒ Binding#irb-แƒ˜แƒ— แƒœแƒแƒฉแƒ•แƒ”แƒœแƒ”แƒ‘แƒ˜ แƒ™แƒแƒ“แƒ˜แƒ— แƒ“แƒ แƒกแƒแƒ‘แƒแƒ–แƒ˜แƒกแƒ แƒ™แƒšแƒแƒกแƒ˜แƒก แƒแƒ‘แƒ˜แƒ”แƒฅแƒขแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒแƒฌแƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ“แƒ”แƒ’แƒ”แƒ‘แƒ˜แƒ—.

    Ruby แƒžแƒ แƒแƒ’แƒ แƒแƒ›แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒก แƒ”แƒœแƒ˜แƒก แƒ’แƒแƒ›แƒแƒจแƒ•แƒ”แƒ‘แƒ 2.7.0

  • แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ™แƒแƒ›แƒžแƒแƒฅแƒขแƒฃแƒ แƒ˜ แƒœแƒแƒ’แƒ•แƒ˜แƒก แƒจแƒ”แƒ›แƒ’แƒ แƒแƒ•แƒ”แƒ‘แƒ”แƒšแƒ˜ (Compaction GC), แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒจแƒ”แƒแƒกแƒ แƒฃแƒšแƒแƒก แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ แƒ”แƒ’แƒ˜แƒแƒœแƒ˜แƒก แƒ“แƒ”แƒคแƒ แƒแƒ’แƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ, แƒ’แƒแƒ“แƒแƒญแƒ แƒแƒก แƒœแƒ”แƒšแƒ˜ แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ”แƒ‘แƒ˜ แƒ“แƒ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ–แƒ แƒ“แƒ˜แƒšแƒ˜ แƒ›แƒแƒฎแƒ›แƒแƒ แƒ”แƒ‘แƒ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒคแƒ แƒแƒ’แƒ›แƒ”แƒœแƒขแƒแƒชแƒ˜แƒ˜แƒก แƒ’แƒแƒ›แƒ, แƒ แƒแƒช แƒฎแƒ“แƒ”แƒ‘แƒ แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒฎแƒ แƒแƒฎแƒœแƒ˜แƒแƒœแƒ˜ Ruby แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒฃแƒจแƒแƒแƒ‘แƒ˜แƒก แƒ“แƒ แƒแƒก. แƒ’แƒ แƒแƒ•แƒแƒ–แƒ” แƒกแƒแƒ’แƒœแƒ”แƒ‘แƒ˜แƒก แƒฉแƒแƒšแƒแƒ’แƒ”แƒ‘แƒ แƒจแƒ”แƒ›แƒแƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ GC.compact แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒ”แƒฎแƒกแƒ˜แƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ•แƒ”แƒ แƒ“แƒ”แƒ‘แƒ˜แƒก แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒแƒ›แƒชแƒ˜แƒ แƒ”แƒ‘แƒšแƒแƒ“ แƒ“แƒ แƒแƒžแƒ”แƒ แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ’แƒ แƒแƒ•แƒ˜แƒก แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก
    CoW (แƒแƒกแƒšแƒ˜-แƒฉแƒแƒฌแƒ”แƒ แƒ).

  • แฒ’แƒแƒœแƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ แƒกแƒ˜แƒแƒจแƒ˜ แƒžแƒแƒ–แƒ˜แƒชแƒ˜แƒ˜แƒก ("def foo(a,b,c)") แƒ“แƒ แƒกแƒแƒ™แƒ•แƒแƒœแƒซแƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ”แƒ‘แƒ˜แƒก ("def foo(key: val)") แƒกแƒแƒคแƒฃแƒซแƒ•แƒ”แƒšแƒ–แƒ” แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒแƒคแƒ˜แƒก แƒ›แƒแƒ›แƒ–แƒแƒ“แƒ”แƒ‘แƒ. แƒกแƒแƒ™แƒ•แƒแƒœแƒซแƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ”แƒ‘แƒ–แƒ” แƒ“แƒ แƒžแƒแƒ–แƒ˜แƒชแƒ˜แƒ”แƒ‘แƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒ™แƒแƒœแƒ•แƒ”แƒ แƒขแƒแƒชแƒ˜แƒ แƒ›แƒแƒซแƒ•แƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ“แƒ แƒแƒ  แƒ˜แƒฅแƒœแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒšแƒ˜ Ruby 3.0 แƒคแƒ˜แƒšแƒ˜แƒแƒšแƒจแƒ˜. แƒ™แƒ”แƒ แƒซแƒแƒ“, แƒ›แƒแƒซแƒ•แƒ”แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ แƒ‘แƒแƒšแƒ แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ แƒกแƒแƒ™แƒ•แƒแƒœแƒซแƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒแƒ“, แƒกแƒแƒ™แƒ•แƒแƒœแƒซแƒ แƒกแƒ˜แƒขแƒงแƒ•แƒแƒ–แƒ” แƒ“แƒแƒคแƒฃแƒซแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ“แƒแƒชแƒ”แƒ›แƒ แƒ‘แƒแƒšแƒ แƒฐแƒ”แƒจแƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒแƒ“ แƒ“แƒ แƒ‘แƒแƒšแƒ แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒ“แƒแƒงแƒแƒคแƒ แƒžแƒแƒ–แƒ˜แƒชแƒ˜แƒฃแƒ  แƒ“แƒ แƒกแƒแƒ™แƒ•แƒแƒœแƒซแƒ แƒกแƒ˜แƒขแƒงแƒ•แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒแƒ“.

    def foo (แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜: 42); แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo({key: 42}) #แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜
    def foo(**kw); แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo({key: 42}) #แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜
    def foo (แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜: 42); แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo(**{แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜: 42}) # OK
    def foo(**kw); แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo(**{แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜: 42}) # OK

    def foo(h, ** kw); แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo (แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜: 42) #แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜
    def foo(h, แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜: 42); แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo (แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜: 42) #แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜
    def foo(h, ** kw); แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo({key: 42}) # OK
    def foo(h, แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜: 42); แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo({key: 42}) # OK

    def foo(h={}, แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜: 42); แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo("key" => 43, แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜: 42) #แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒฃแƒšแƒ˜
    def foo(h={}, แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜: 42); แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo({"key" => 43, แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜: 42}) # แƒ’แƒแƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ
    def foo(h={}, แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜: 42); แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo({"key" => 43}, แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜: 42) # OK

    def foo(opt={}); แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo( แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜: 42 ) # OK

    def foo(h, **nil); แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo(แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜: 1) # แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ
    def foo(h, **nil); แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo(**{แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜: 1}) # แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ
    def foo(h, **nil); แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo ("str" โ€‹โ€‹=> 1) # แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ˜แƒก แƒจแƒ”แƒชแƒ“แƒแƒ›แƒ
    def foo(h, **nil); แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo({key: 1}) # OK
    def foo(h, **nil); แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo ({"str"โ€Ž => 1}) # OK

    h = {}; def foo(*a) แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo(**h) # [] h = {}; def foo(a) แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo(**h) # {} แƒ“แƒ แƒ’แƒแƒคแƒ แƒ—แƒฎแƒ˜แƒšแƒ”แƒ‘แƒ
    h = {}; def foo(*a) แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo(h) # [{}] h = {}; def foo(a) แƒ“แƒแƒกแƒแƒกแƒ แƒฃแƒšแƒ˜; foo(h) # {}

  • แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒšแƒแƒ‘แƒ แƒ‘แƒšแƒแƒ™แƒ˜แƒก แƒžแƒแƒ แƒแƒ›แƒ”แƒขแƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒแƒ“ แƒ“แƒแƒœแƒแƒ›แƒ แƒ˜แƒšแƒ˜ แƒชแƒ•แƒšแƒแƒ“แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ.

    [1, 2, 3]. แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ { แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒก @1 } # แƒ›แƒแƒกแƒฌแƒแƒœแƒก [1, 2, 3]. แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ { |i| แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒก แƒ›แƒ” }

  • แƒ”แƒฅแƒกแƒžแƒ”แƒ แƒ˜แƒ›แƒ”แƒœแƒขแƒฃแƒšแƒ˜ แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ แƒ“แƒ˜แƒแƒžแƒแƒ–แƒแƒœแƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒกแƒแƒฌแƒงแƒ˜แƒกแƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒจแƒ”.

    ary[..3] # แƒ˜แƒ’แƒ˜แƒ•แƒ”, แƒ แƒแƒช ary[0..3] rel.where (แƒ’แƒแƒงแƒ˜แƒ“แƒ•แƒ”แƒ‘แƒ˜: ..100)

  • แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ Enumerable#tally แƒ›แƒ”แƒ—แƒแƒ“แƒ˜, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ˜แƒ—แƒ•แƒšแƒ˜แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒฏแƒ”แƒ  แƒฎแƒ“แƒ”แƒ‘แƒ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒ˜ แƒ”แƒšแƒ”แƒ›แƒ”แƒœแƒขแƒ˜.

    ["a", "b", "c", "b"].tally
    #=> {"a"=>1, "b"=>2, "c"=>1}

  • แƒžแƒ˜แƒ แƒแƒ“แƒ˜ แƒ›แƒ”แƒ—แƒแƒ“แƒ˜แƒ— แƒ–แƒแƒ แƒ˜ แƒœแƒ”แƒ‘แƒแƒ“แƒแƒ แƒ—แƒฃแƒšแƒ˜แƒ แƒกแƒ˜แƒขแƒงแƒ•แƒแƒกแƒ˜แƒขแƒงแƒ•แƒ˜แƒ— "แƒ—แƒ•แƒ˜แƒ—".

    แƒ“แƒ”แƒคแƒแƒ
    แƒ‘แƒแƒšแƒ
    แƒžแƒ˜แƒ แƒแƒ“แƒ˜ :foo
    แƒ—แƒ•แƒ˜แƒ—.แƒคแƒฃ

  • แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ Enumerator::Lazy#eager แƒ›แƒ”แƒ—แƒแƒ“แƒ˜ แƒ–แƒแƒ แƒ›แƒแƒชแƒ˜ (Enumerator::Lazy) แƒแƒฆแƒ แƒ˜แƒชแƒฎแƒ•แƒ˜แƒกแƒ’แƒแƒœ แƒ แƒ”แƒ’แƒฃแƒšแƒแƒ แƒฃแƒšแƒ˜ แƒแƒฆแƒ แƒ˜แƒชแƒฎแƒ•แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

    a = %w(foo bar baz)
    e = a.lazy.map {|x| x.upcase }.แƒ แƒฃแƒ™แƒ {|x| x + "!" }.แƒ›แƒแƒกแƒฌแƒ แƒแƒคแƒ”
    แƒž แƒ”.แƒ™แƒšแƒแƒกแƒ˜ #=> แƒแƒฆแƒ›แƒ แƒ˜แƒชแƒฎแƒ•แƒ”แƒšแƒ˜
    e.แƒ แƒฃแƒ™แƒ {|x| x + "?" } #=> [โ€œFOO!?โ€, โ€œBAR!?โ€, โ€œBAZ!?โ€]

  • แƒ’แƒแƒ’แƒ แƒซแƒ”แƒšแƒ“แƒ แƒ”แƒฅแƒกแƒžแƒ”แƒ แƒ˜แƒ›แƒ”แƒœแƒขแƒฃแƒšแƒ˜ JIT แƒจแƒ”แƒ›แƒ“แƒ’แƒ”แƒœแƒ”แƒšแƒ˜แƒก แƒ’แƒแƒœแƒ•แƒ˜แƒ—แƒแƒ แƒ”แƒ‘แƒ, แƒ แƒแƒ›แƒ”แƒšแƒกแƒแƒช แƒจแƒ”แƒฃแƒซแƒšแƒ˜แƒ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ•แƒœแƒแƒ“ แƒ’แƒแƒแƒฃแƒ›แƒฏแƒแƒ‘แƒ”แƒกแƒแƒก แƒแƒžแƒšแƒ˜แƒ™แƒแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒกแƒ แƒฃแƒšแƒ”แƒ‘แƒ Ruby แƒ”แƒœแƒแƒ–แƒ”. Ruby-แƒจแƒ˜ แƒจแƒ”แƒ›แƒแƒ—แƒแƒ•แƒแƒ–แƒ”แƒ‘แƒฃแƒšแƒ˜ JIT แƒจแƒ”แƒ›แƒ“แƒ’แƒ”แƒœแƒ”แƒšแƒ˜ แƒฏแƒ”แƒ  แƒฌแƒ”แƒ แƒก C แƒ™แƒแƒ“แƒก แƒ“แƒ˜แƒกแƒ™แƒ–แƒ”, แƒ แƒ˜แƒก แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒแƒช แƒ˜แƒก แƒฃแƒฌแƒแƒ“แƒ”แƒ‘แƒก แƒ’แƒแƒ แƒ” C แƒจแƒ”แƒ›แƒ“แƒ’แƒ”แƒœแƒ”แƒšแƒก แƒ›แƒแƒœแƒฅแƒแƒœแƒ˜แƒก แƒ˜แƒœแƒกแƒขแƒ แƒฃแƒฅแƒชแƒ˜แƒ”แƒ‘แƒ˜แƒก แƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก (แƒ›แƒฎแƒแƒ แƒ“แƒแƒญแƒ”แƒ แƒ˜แƒšแƒ˜แƒ GCC, Clang แƒ“แƒ Microsoft VC ++). แƒแƒฎแƒแƒšแƒ˜ แƒ•แƒ”แƒ แƒกแƒ˜แƒ แƒแƒฎแƒแƒ แƒชแƒ˜แƒ”แƒšแƒ”แƒ‘แƒก แƒกแƒแƒญแƒ˜แƒ แƒแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ›แƒ—แƒฎแƒ•แƒ”แƒ•แƒแƒจแƒ˜ แƒ˜แƒœแƒกแƒขแƒแƒšแƒแƒชแƒ˜แƒ˜แƒก แƒ›แƒ”แƒ—แƒแƒ“แƒก, แƒแƒžแƒขแƒ˜แƒ›แƒ˜แƒ–แƒแƒชแƒ˜แƒ˜แƒก แƒ แƒ”แƒŸแƒ˜แƒ›แƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒ แƒฉแƒ”แƒ•แƒ˜แƒ— แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒแƒก แƒ™แƒแƒ›แƒžแƒ˜แƒšแƒแƒชแƒ˜แƒ˜แƒก แƒ“แƒ แƒแƒก, "--jit-min-แƒ–แƒแƒ แƒ”แƒ‘แƒ˜แƒก" แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ แƒ›แƒœแƒ˜แƒจแƒ•แƒœแƒ”แƒšแƒแƒ‘แƒ แƒ’แƒแƒ˜แƒ–แƒแƒ แƒ“แƒ 5-แƒ“แƒแƒœ 10000-แƒ›แƒ“แƒ” แƒ“แƒ "--jit-max-cache" 1000-แƒ“แƒแƒœ 100-แƒ›แƒ“แƒ”.
  • CGI.escapeHTML-แƒ˜แƒก, แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒก แƒ“แƒ 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,
    แƒกแƒ˜แƒ›แƒ”แƒ‘แƒ˜แƒแƒœแƒ˜ แƒกแƒ™แƒแƒœแƒ”แƒ แƒ˜ 1.0.3;

  • แƒ‘แƒ˜แƒ‘แƒšแƒ˜แƒแƒ—แƒ”แƒ™แƒ”แƒ‘แƒ˜ แƒ’แƒแƒ“แƒแƒ•แƒ˜แƒ“แƒ แƒ‘แƒแƒ–แƒ˜แƒก แƒ’แƒแƒœแƒแƒฌแƒ˜แƒšแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ แƒ’แƒแƒ แƒ” แƒซแƒ•แƒ˜แƒ แƒคแƒแƒกแƒ˜ แƒฅแƒ•แƒ”แƒ‘แƒ˜แƒก แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ–แƒ”
    CMath (cmath แƒซแƒ•แƒ˜แƒ แƒคแƒแƒกแƒ˜ แƒฅแƒ•แƒ),
    Scanf (scanf Gem),
    แƒญแƒฃแƒ แƒ•แƒ˜ (แƒญแƒฃแƒ แƒ•แƒ˜ แƒซแƒ•แƒ˜แƒ แƒคแƒแƒกแƒ˜ แƒฅแƒ•แƒ),
    แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜ (แƒกแƒ˜แƒœแƒฅแƒ แƒแƒœแƒ˜แƒ–แƒแƒขแƒแƒ แƒ˜),
    แƒ—แƒ”แƒ›แƒ”แƒ‘แƒ˜แƒ›แƒแƒ”แƒšแƒแƒ“แƒ” (thwait gem),
    E2MM (e2mmap Gem).

  • แƒœแƒแƒ’แƒฃแƒšแƒ˜แƒกแƒฎแƒ›แƒ”แƒ•แƒ˜ stdlib แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜ แƒ’แƒแƒ›แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ”แƒ‘แƒฃแƒšแƒ˜แƒ rubygems.org-แƒ–แƒ”:
    แƒœแƒ˜แƒจแƒœแƒฃแƒšแƒ˜,
    cgi,
    แƒ“แƒ”แƒšแƒ”แƒ’แƒแƒขแƒ˜,
    แƒ’แƒแƒ˜แƒฌแƒ”แƒšแƒ”,
    แƒฌแƒ›แƒ˜แƒœแƒ“แƒ แƒžแƒแƒžแƒ˜,
    แƒฌแƒ›แƒ˜แƒœแƒ“แƒ smtp,
    แƒฆแƒ˜แƒ3,
    แƒžแƒกแƒขแƒแƒ แƒ”,
    แƒกแƒ˜แƒœแƒ’แƒšแƒ˜แƒขแƒแƒœแƒ˜. แƒ›แƒแƒœแƒ˜แƒขแƒแƒ แƒ˜แƒก แƒ›แƒแƒ“แƒฃแƒšแƒ”แƒ‘แƒ˜ แƒแƒ  แƒแƒ แƒ˜แƒก แƒ’แƒแƒ“แƒแƒขแƒแƒœแƒ˜แƒšแƒ˜ rubygems.org-แƒ–แƒ”
    แƒ“แƒแƒ›แƒ™แƒ•แƒ˜แƒ แƒ•แƒ”แƒ‘แƒ”แƒšแƒ˜,
    แƒ“แƒ แƒแƒ˜แƒก แƒแƒ›แƒแƒฌแƒฃแƒ แƒ•แƒ,
    แƒ›แƒ˜แƒ™แƒ•แƒšแƒ”แƒ•แƒ,
    แƒฃแƒ แƒ˜,
    yaml, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ˜แƒช แƒ˜แƒ’แƒ–แƒแƒ•แƒœแƒ”แƒ‘แƒ แƒ›แƒฎแƒแƒšแƒแƒ“ แƒ แƒฃแƒ‘แƒ˜แƒก แƒ‘แƒ˜แƒ แƒ—แƒ•แƒ˜แƒ—.

  • Build Ruby แƒแƒฎแƒšแƒ แƒ›แƒแƒ˜แƒ—แƒฎแƒแƒ•แƒก C แƒจแƒ”แƒ›แƒ“แƒ’แƒ”แƒœแƒ”แƒšแƒก, แƒ แƒแƒ›แƒ”แƒšแƒ˜แƒช แƒ›แƒฎแƒแƒ แƒก แƒฃแƒญแƒ”แƒ แƒก C99 แƒกแƒขแƒแƒœแƒ“แƒแƒ แƒขแƒก.

แƒฌแƒงแƒแƒ แƒ: opennet.ru

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ