Skip to content

Instantly share code, notes, and snippets.

@megane42
Last active December 11, 2019 03:35
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save megane42/ffd931ddeb1247932b1201231182e2d2 to your computer and use it in GitHub Desktop.
Save megane42/ffd931ddeb1247932b1201231182e2d2 to your computer and use it in GitHub Desktop.

Ginza.rb #78 メモ

資料

GC.compact

  • これをアプリプログラマが直接使うことはあんまなさそう
  • 多分 GC 中は全部の処理が止まるんだろう。昔の JVM でそういうのがあった (stop the world)
  • バッチ処理とかでは有用なのかなあ
  • unicorn だと有用なのかなあ

Pattern Matching

  • API サーバーで便利そう
  • Array を返すような deconstruct メソッドを定義しておくと、そのクラスを case に食わせられる
  • else を書かない場合、マッチしないと Error が発生する
  • warning は出るけど、「どんどん production で使ってフィードバックがほしい」的な感じらしい
    • よほどのことがなければ 3.0 では warning が外れるはず

irb

  • べんり
  • binding.irb の時代がきそう
  • readline のインストールが不要になるので、ruby のインストールで躓くというのも減りそう

kwargs

  • キーワード引数を渡してるのか、最後の引数としてハッシュを渡してるのか、を明示しないといけない
  • ruby 3.0 での廃止に向けて warning を出すようにした
  • 自分の書いたコードならまだしも、依存してる gem で発生したりすると厄介
  • 難しい

numbered parameters

  • 名前重要とか言ってるのにどうなの?
  • _1 が現状 valid な変数名なのがなおのことタチが悪い
    • 一度でも _1 に代入するとただのローカル変数になる...
    • @1 なら invalid だった
  • スクリプト言語としての文脈なら意外とアリなのでは?

beginless range

  • 「年収条件 : 上限なし」みたいなのをコードとして表現できるようになっていいね
  • nil..nil で両方省略ができる

tally

  • 名前がかっこいい
    • 「正の字」の英語版

self.private_method

  • 単に対称性のため
  • 宗教上の理由で self をつけたい人向け

(...)

  • なぜかドキュメントに書かれてない
  • *args だと block が取れないけど、こっちだと全部渡せる
  • メソッドの引数自体も (...) じゃないといけない(普通に引数をとりつつ (...) で渡す、は無理)
    • 微妙に使い勝手悪い

comment

foo
# ここに
.bar
# コメントが
.baz
# 書ける!

まとめ

  • くしくも、python と同じように 2.7 -> 3.0 に大ジャンプがある
    • python は 2 と 3 でコミュニティの断絶が起きて大変そうだったので、 preview のうちに試してフィードバックしよう!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment