Try   HackMD

Ruby3 さみっと 何でも書いて良いほわいとぼーど

https://rhc.connpass.com/event/169873/

  • 時間は目安です
  • zoom のスクリーンショットなどは許可無く転載はご遠慮下さい

雑に書いてもいいのかな→いいよ
matz参上

09:00-09:30 Opening / Ruby 3 by Matz (zoom 練習時間)

09:30-10:30 Fiber (Samuel)

  • 資料:

10:30-11:30 JIT (k0kubun)

11:30-12:30 Guild (ko1)

12:30-13:30 Lunch break

13:30-15:00 Ruby 3 type activities (mame, soutaro)

15:00-15:15 Roadmap for RubyGems 4 and Bundler 3 (hsbt)

15:15-15:30 Proposal of Proc#using (shugo)

15:45-15:50 Windows and UTF-8 (usa)

15:30-15:45 Real Terminal Testing Framework (aycabta)

  • 資料:

15:50- Ruby3 Q&A

Matz が地上げしたいモノリスト

第一引数のカッコ

p (1,2,3) #=> 今でもerror!
p (1)+2   #=> 今:p(1+2) エラーにしたい
p (a;b;c) #=> 今:a;b;p(c) エラーにしたい

p (x+y).to_s

backtick

`ls`

単一文字リテラル

?a

三項演算子

a = cond? ? expr1 : expr2
# ?? が醜い
a = if cond? then expr1 else expr2 end

ネストしたdef

特異メソッド定義じゃなくて、普通のdef

そのメソッド内だけ有効な「関数」を作るのに使える

def foo
  # 現状はカレントクラスにメソッド定義
  # foo内だけで見える「関数」にしたい
  def bar
  end
  bar
end

foo
bar  # 現状は呼べる、これはエラーにしたい

defer

open x do
  open y do
    open z do
      ...
    end
  end
end

begin
...
ensure
  begin
    expr1
  ensure
    expr2
  end
end
{
  defer expr1
  defer expr2
  ...
}
try (File f1 = File.open(...), File f2 = File.open(...)) {
  // ...
}
begin
  expr1 ensure clean1
  expr2 ensure clean2
  # ...
end
f1 = open(path1) ensure f1.close
f2 = open(path2) ensure f2.close
Nanika.open(expr1) do
  # ...
ensure
  clean1
end
f = open(path)
f.close ensure