ジョギング
日課
- お休み
暑くなってきた...
Tシャツでオッケー牧場。
— Yohei Kawahara(かっぱ) (@inokara) 2018年5月15日
- まだ 5 月なのに...
筋違いな質問
@backlogapp 突然のご連絡すいません. 旧 API の廃止によって, Jenkins の Backlog プラグインへの影響はありませんでしょうか? https://t.co/22kBFW8aQi
— Yohei Kawahara(かっぱ) (@inokara) 2018年5月15日
- ヌーラボさんの Backlog で提供されている古い API 廃止のアナウンスを受けて
- Jenkins の Backlog API への影響って無いのかなーってヌーラボさんに聞くことではなかったのかもしれない
- ヌーラボさんの中の方が作られているので, 思わずツイッターで聞いてしまったけど, そもそも OSS で提供されているので, OSS としての聞き方があったよな... と反省
知らないことばかり
信じることさ, 必ず最後に愛は勝つ. #電車内のカップルになりかけ風の男女を横にして
— Yohei Kawahara(かっぱ) (@inokara) 2018年5月15日
- この歳になっても知らないことが多いと反省
- 色々と話を聴いてホー, おおー, みたいなリアクションしか出来なかったけど, 世の中の広さを感じた時間だった
今日のるびぃ ~ REx - Ruby Examination にチャレンジ (3) ~
REx - Ruby Examination の問題を自分なりにアレンジした上で 1 〜 3 問くらいずつ解いていく. 正直言ってかなり難しい. 尚, irb に動作確認環境は以下の通り.
$ ruby --version ruby 2.1.10p492 (2016-04-01 revision 54464) [x86_64-linux] $ irb --version irb 0.9.6(09/06/30)
mix-in
以下のコードを実行するとどうなるか.
module Mod def c "M#c" end end class Cls include Mod end p Cls.methods.include? :c
false
以下, irb にて確認.
irb(main):001:0> module Mod irb(main):002:1> def c irb(main):003:2> "M#c" irb(main):004:2> end irb(main):005:1> end => :c irb(main):006:0> irb(main):007:0* class Cls irb(main):008:1> include Mod irb(main):009:1> end => Cls irb(main):010:0> irb(main):011:0* p Cls.methods.include? :c false => false
え, なんでやねんってなりそうだけど, 以下の点に注意する必要がある.
include Mod
でモジュールのメソッドを mix-in しているCls.methods
では特異メソッド表示するCls#c
はインスタンスメソッドである為,Cls.methods
の結果には含まれない
以下のように書くと true
となる.
irb(main):013:0> p Cls.new.methods.include? :c true => true
以下のように extend
で mix-in した場合にも true
となる.
irb(main):001:0> module Mod irb(main):002:1> def c irb(main):003:2> "M#c" irb(main):004:2> end irb(main):005:1> end => :c irb(main):006:0> irb(main):007:0* class Cls irb(main):008:1> extend Mod irb(main):009:1> end => Cls irb(main):010:0> irb(main):011:0* p Cls.methods.include? :c true => true
クラスメソッド (特異メソッド)
以下のコードを実行するとどうなるか.
class Cls class << Cls def foo 'foo' end end def foo 'bar' end end p Cls.new.foo
bar
以下, irb にて確認.
(略) irb(main):013:0* p Cls.new.foo "bar" => "bar"
- 特異クラス内
class << Cls; end
で宣言されたメソッドは特異メソッド (クラスメソッド) となる - 特異メソッドは
def Cls.hoge: end
でも宣言することが可能 - 設問では, インスタンスを作成 (
Cls.new
) して, インスタンスメソッド (foo
) を呼び出している
特異メソッドを呼ぶ場合には, 以下のように書く.
irb(main):014:0> p Cls.foo "foo" => "foo"
フムフム.