webエンジニアの日常

RubyやPython, JSなど、IT関連の記事を書いています

Rubyをもう一歩進んで勉強する7章(superの挙動)

親クラスの同名メソッドを呼ぶsuperについてです。

例えば以下のような場合

class User
  def login(acount, password)
    ~ログイン処理~
  end
end

class AdminUser < User
  def login(password)
    ~ログイン処理~
    ~固有の処理~
  end
end

AdminUserクラスではログインメソッドの中で、親クラスであるUserとログイン処理を共有しています。

同じ処理をなんども書きたくないので、親クラスのログインメソッドを呼びたい。そんなときに使うのがsuperです。

続きを読む

Rubyをもう一歩進んで勉強する6章(メソッド探索と特異クラス)

Rubyでは、継承しているクラスを上へ上へと昇りながらメソッド探索を行います。

一つ上のクラスはsuperclassメソッドで知ることができますが、モジュールをインクルードしたときはsuperclassで検出できず、しかしいつの間にかモジュールのメソッドが使えるようになっています。

今回はその仕組みを紐解いていきます。

そのためにまずは、オブジェクト、クラス、モジュールについて用語を復習しておきます。

続きを読む

Rubyをもう一歩進んで勉強する5章(Rubyが出す警告について)

Rubyはコンパイルすることなく、即座に実行できる言語ですが、実際は構文解析などコンパイラ的な処理を行ってから実行されます。

コンパイラフェーズで出される警告は特に重要で、その大多数が曖昧な書き方ゆえ、さまざまな解釈の中から一つを選択したときに出されます。

例えば、次のような例はコンパイル時に警告が出ます

"808".split /0/

後ろの/0/は正規表現をsplitメソッドの引数に渡したつもりですが、/が割り算演算子に見えなくもありません。

続きを読む

Rubyをもう一歩進んで勉強する4章(Rubyの定数について)

Rubyでは定数を先頭を大文字の変数として定義することができますが、ミュータブル(変更不可)ではありません。

システム全体で定数は変更されないことが期待されますが、イミュータブル(変更可能)となっているので、予期せぬ不具合や見つけにくいバグが生じる恐れがあります。

そこで、4章では定数をミュータブルにする方法を見ていきます。

続きを読む

Rubyをもう一歩進んで勉強する3章(Perl風機能の排除)

第3章はRubyに残っているPerl風機能を排除(できるだけ使わないようにしよう)です。

Rubyは様々な言語から影響を受けながら作られた言語です。

影響を受けた言語の一つとしてPerlがあります。

僕はPerlを触ったことがなく、初めてRubyを触ったのも2系になってからなので(Perl風機能がだんだんと減っている?)実はこの章はあまりピンときませんでした。

Rubyの暗号名多Perl風機能を避けよう

Perl風機能とは何か次の例で示します

続きを読む

陣痛から出産までの全記録~次男誕生~

f:id:s-uotani-zetakansu:20180623013607j:plain

次男が誕生してから、一瞬で1か月が過ぎました。

子供と過ごしていると一日があっという間に終わってしまいますね。

まだ覚えているうちに、陣痛が始まってから産まれるまでに起こったことを時系列で記録しておきたいと思います。

2018/5/13(出産前日)


15:00

今朝から弱い陣痛のようなものがあり、昼過ぎごろから一定の間隔で来るようになりました。

経産婦なので、病院からは陣痛の間隔が20~30分になったら、病院に連絡し来るように言われていました。

ですが、陣痛の痛みが弱いということから、前駆陣痛だと思っており、やっぱり一度病院で診てもらおうと思ったときには陣痛の間隔が4分になっていました。痛みはまだ本陣痛ではない感じです。

まずは病院に電話して判断を仰いだのが出産前日の15時でした。

病院に来てくださいとのことなので、病院に向かいます

続きを読む