ruby
globalの場合 $ rbenv versions * 2.3.0 (set by /home/vagrant/.rbenv/version) 2.3.1 2.4.1 /home/vagrant/.rbenv/version で指定されているらしい。確かめてみる。 $ cat /home/vagrant/.rbenv/version 2.3.0 確かにversionファイルに記述されている。 試…
rbenvで特定のrubyバージョンをinstallしようとした ruby 2.4.1が欲しかった。 $ rbenv install --list ... 2.3.4 2.3.5 2.4.0-dev 2.4.0-preview1 2.4.0-preview2 2.4.0-preview3 2.4.0-rc1 2.4.0 2.5.0-dev ... 無い。 原因 ruby-buildのバージョンが低い…
配列の準備 ary1 = %w(a b c) # ["a","b","c"] ary2 = %w(b c d) # ["b","c","d"] %wというのはパーセント記法と言うやつです。 これを使うと配列の定義が簡単にできます。 今回の場合は文字列を要素に持つ配列を作成しています。 共通集合 p (ary1 & ary2) …
moduleを定義する module MyModule def hello puts 'hello' end end MyModule.hello #=> undefined method `hello' for MyModule:Module (NoMethodError) これだけだと使えない。 moduleを定義 + module_functionを定義 module MyModule def hello puts 'hel…
include先のクラスにて、インスタンスメソッド内で使う module Hoge def hello puts 'hello' end end class Fuga include Hoge def call_mod_method # インスタンスメソッド hello end end fuga = Fuga.new fuga.call_mod_method Hoge moduleをincludeしてFu…
Rubyのselfが微妙にわからん Rubyのselfが使う割にきちんと理解できていない気がしたので、 いろんな文脈で出力してみた。 トップレベルの文脈でのself コード p self 結果 main トップレベルではmainというオブジェクトがmethodを実行しているらしい。 へぇ…
PHPとRubyのprivate methodを比較してみる 子クラスから親クラスのprivate methodが呼び出せるか、 確かめてみます。 PHPの場合 実行コード
前回のソースコードをstrategyパターンを使用して書き換えていく 前回のソースコードから、戦略に関する部分についてクラスで切り出します。 戦略クラス(特定戦略時の振る舞いを持ったクラス)を作成 # ガンガン行こうぜのとき class StrategyGangan def se…
このシリーズについて このシリーズでは、 デザインパターンを使う場合 デザインパターンを使わなかった場合 について、 「仕様変更があった時、既存コードの書き換えがどれくらい発生するか?」 という観点で比較し、デザインパターンのメリットをより感じ…
前回のソースコードをstateパターンを使用して書き換えていく 前回のソースコードを見てみると、 状態と、その状態の時の振る舞いが描かれていることがわかります。 図の例なら、「HAPPY」「HAPPY時の振る舞い(hello, goodbye)」です。 これを状態クラスと…
デザインパターンのメリットについて今一度確認したい 業務で使ったり使わなかったりするデザインパターンですが、 なかなかメリットについてつきつめて考えたことがない。 「なんとなくソースコードがきれいになった気がする。。。」で頭がとまってしまって…