高木のブログ

Ruby 3.0.0 Preview 1を試す

2020/09/26

Ruby 3.0.0 Preview 1がリリースされたっぽいので一応触ってみた

Ruby 3.0.0 Preview 1を手に入れる

$ docker pull rubylang/ruby:3.0.0-preview1-bionic
3.0.0-preview1-bionic: Pulling from rubylang/ruby
f08d8e2a3ba1: Pull complete
3baa9cb2483b: Pull complete
94e5ff4c0b15: Pull complete
1860925334f9: Pull complete
434ea235d88d: Pull complete
f570e67a5e0c: Pull complete
ae0609335980: Pull complete
8d17f446c58f: Pull complete
14b29e11e63e: Pull complete
8bc4734d3ba1: Pull complete
Digest: sha256:04a9656eb5a0ffb41017de92a78963286819a984e39d842e67387bf1a417dd17
Status: Downloaded newer image for rubylang/ruby:3.0.0-preview1-bionic
docker.io/rubylang/ruby:3.0.0-preview1-bionic

$ docker run --rm -it rubylang/ruby:3.0.0-preview1-bionic ruby -v
ruby 3.0.0preview1 (2020-09-25 master 0096d2b895) [x86_64-linux]

追加された機能(ほんの一部)を試す

これでirbを起動する

$ docker run --rm -it rubylang/ruby:3.0.0-preview1-bionic irb
irb(main):001:0>

右代入演算子

左辺の値を右辺の変数に代入する=>演算子

irb(main):024:0> 2 + 3 => x
=> 5
irb(main):025:0> puts x
5
=> nil

エンドレスメソッド定義構文

ブロックのendを省略できる(Scalaっぽい)
元はエイプリルフールネタがとして作られたチケットらしい

irb(main):016:0>  def square(x) = x * x
=> :square
irb(main):019:0> square(5)
=> 25

Hash#except

除外できる
ActiveSupport拡張にあったのがRuby本体に組み込まれた

irb(main):026:0> h = { a: 1, b: 2, c: 3 }
=> {:a=>1, :b=>2, :c=>3}
irb(main):027:0> h.except(:a)
=> {:b=>2, :c=>3}
irb(main):028:0> h.except(:a, :c)
=> {:b=>2}

参考


Pixela