Curses from osarusystem
Hamamatsu.rb #61
作成日 | : | 2016/02/12 |
---|---|---|
最終更新日 | : | 2020/07/09 |
Hamamatsu.rb #61
作成日 | : | 2016/02/12 |
---|---|---|
最終更新日 | : | 2020/07/09 |
概要
- 日時
- 2016/02/10(水) 19:00 - 21:30
- 会場
やったこと
- KPT振り返り
- 自己紹介
- 参加者多数
- LT
- RubyやRailsでリファクタリングに使えそうなイディオムとか便利メソッドとか
- KPT
新規参加
- 新規参加者
- hagitaさん
- edaさん
LT
自己紹介
- hagitaさん
- 普段はwindows
- twilloに興味があるらしい
Curses
- Langur
実用的Rubyスクリプティング
- @es_chuuiさん
- cursesの使いかたも載っている
- Ruby/TKいかが?
SHOES
- mobius_bkstさん
- GUIツールキット
- Whyの人が作ったらしい
- 感動的Rubyガイド
RubyやRailsでリファクタリングに使えそうなイディオムとか便利メソッドとか
@ke_tachibanaさんのメモ
- ruby-first.md
- slackで共有
tryでblockも渡せる
- Ruby2.3以降は&.演算子で代用可能
- 以下はnilならば値を代入する例
ソース1. try文でblockも渡せる
upper_case = user.name.try { |name| name.upcase } || 'No Name' obj.name && obj.name.upcase
- Rubyは&& || は左辺が実行されないと右辺が実行されないことが保証される
- メソッドの戻り値を返すときにreturnを使わない
- returnを書くのは制御を明示したいとき
- 以下の例ではUser objectが返る
ソース2. メソッドの戻り値を返すときにreturnを使わない
def build_user User.new.tap do |user| user.email = "hoge@hoge.com" user.name = "Taro Yamada" end end
nil
- to_s
- 'nil'
- to_a
- []
- to_h
- {}
- to_i
- 0
- to_s
%
- %r ... 正規表現
- 後続するセパレータはたいていの記号が使える
- {}, [], ||, .. ...etc
- %w ... 配列の自動生成
- %r ... 正規表現
array.map(&:attr)は何が起こっているのか?
- &を使うことでブロックを呼び出せる
- &付き引数がprocオブジェクトでなければto_procを呼びProcに変換される
ソース3. array.map(&:attr)は何が起こっているのか?
class MyFunc def to_proc -> {puts 'called!'} end end def foo yield end func = MyFunc.new foo(&func) [1].map(&:to_s) [1].map {|i| i.to_s} [1].map {|i| to_s.to_proc.call(i)}
- nilが配列化を区別せずにArray()として処理する
ソース4. nilが配列化を区別せずにArray()として処理する
Array.wrap(1) (users || []).each #入力が曖昧なときにこうやると良い #eachが実装されていないオブジェクトに対してエラーを見つけられる
- 数値リテラルを_で区切っても同じ値として扱われる
ソース5. 数値リテラルを_で区切っても同じ値として扱われる
1_00_00 10000
値オブジェクトの作り方
- attr_attribute
- OpenStruct
- hashをarrayに変換
多重代入
- 要素の順番に意味のある配列は別々の変数で受け取る
- ハッシュをeachで回した時にブロックが受け取る引数も同じ
ソース6. 多重代入
a, b = 14.divmod(3) # 14.divmod(3)は配列で値を返す => a = 4, b = 2
- 配列の連結に+でなく*(splat)を使う
ソース7. 配列の連結に+でなく*(splat)を使う
numbers = [1, 2, 3] numbers_with_zero_and_100 = [0, *numbers, 100] => [0, 1, 2, 3, 100] # numbersが展開される numbers_with_zero_and_100 = [0, numbers, 100] => [0, [1, 2, 3], 100]
- nilだったら代入する
ソース8. nilだったら代入する
i == nil i ||= 1
ハッシュのキーは文字列ではなくシンボルを使う
- 簡潔だし速い
Rubyは例外を投げるのではなくエラーを投げる
- 一度rescueからraiseしたあとに再度raiseできる
size - 1ではなくマイナスのインデックスで最後の文字や要素を指定する
配列の便利なメソッドを使って簡略化する
- find(最初の要素)
- select(条件に合うものをすべて返す)
- count(条件に合う要素の数を返す)
残りは各自で勉強する
感想
- 途中で置いて行かれました
- 復習します
- 以前Paizaのコードを書いている時に勉強したはずのメソッドを忘れていました
- slideshareで初めてslideを公開しました
- 今後は公開していきたいと考えています
- 反省会での要望
- Raspberry PiでRubyを使ったLチカ
- スライドの配色が暗く怖かった
次回
- 3/9(水) 19:00〜