# Ruby3 さみっと 何でも書いて良いほわいとぼーど https://rhc.connpass.com/event/169873/ * 時間は目安です * zoom のスクリーンショットなどは許可無く転載はご遠慮下さい 雑に書いてもいいのかな→いいよ matz参上 ## 09:00-09:30 Opening / Ruby 3 by Matz (zoom 練習時間) * 資料: https://drive.google.com/open?id=1Kqxp21BFKcXuK4HJPN-wiUEwK8qRH1lE ## 09:30-10:30 Fiber (Samuel) * 資料: ## 10:30-11:30 JIT (k0kubun) * 資料: https://speakerdeck.com/k0kubun/ruby-3-samituto ## 11:30-12:30 Guild (ko1) * 資料: http://atdot.net/~ko1/activities/2020_ruby3summit.pdf ## 12:30-13:30 Lunch break ## 13:30-15:00 Ruby 3 type activities (mame, soutaro) * 資料 * mame https://www.slideshare.net/mametter/ruby-3-232144041 * soutaro https://speakerdeck.com/soutaro/ruby3-is-a-typed-language ## 15:00-15:15 Roadmap for RubyGems 4 and Bundler 3 (hsbt) * 資料: https://www.slideshare.net/hsbt/roadmap-for-rubygems-4-and-bundler-3 ## 15:15-15:30 Proposal of Proc#using (shugo) * 資料: https://github.com/shugo/ruby3summit/blob/master/README.md ## 15:45-15:50 Windows and UTF-8 (usa) * 資料: https://speakerdeck.com/unak/rubys-encoding-on-windows-at-ruby3 ## 15:30-15:45 Real Terminal Testing Framework (aycabta) * 資料: ## 15:50- Ruby3 Q&A ### Matz が地上げしたいモノリスト #### 第一引数のカッコ ```ruby 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 ```ruby `ls` ``` #### 単一文字リテラル ```ruby ?a ``` #### 三項演算子 ```ruby a = cond? ? expr1 : expr2 # ?? が醜い a = if cond? then expr1 else expr2 end ``` #### ネストしたdef 特異メソッド定義じゃなくて、普通のdef そのメソッド内だけ有効な「関数」を作るのに使える ```ruby def foo # 現状はカレントクラスにメソッド定義 # foo内だけで見える「関数」にしたい def bar end bar end foo bar # 現状は呼べる、これはエラーにしたい ``` ### `defer` ```ruby open x do open y do open z do ... end end end begin ... ensure begin expr1 ensure expr2 end end ``` ```go { defer expr1 defer expr2 ... } ``` ```java try (File f1 = File.open(...), File f2 = File.open(...)) { // ... } ``` ```ruby begin expr1 ensure clean1 expr2 ensure clean2 # ... end ``` ```ruby f1 = open(path1) ensure f1.close f2 = open(path2) ensure f2.close ``` ```ruby Nanika.open(expr1) do # ... ensure clean1 end ``` ```ruby f = open(path) f.close ensure ```