TitaniumMobile勉強記

Web系エンジニア向けのキャリアアドバイザーやってましたが現在はフリーランスで開発含めて色々やってます。技術ネタとしてはRuby/RailsとJavaScript関連(Node.js、Titanium)あたり

はじめてのRubyを再度読み返す

昨日につづいてまたRubyネタ

WEBrickのライブラリを読んでいてたとえばhttpserver.rbに

def mount_proc(dir, proc=nil, &block)

とあった場合の&blockというのがわからなかったり、あとはserver.rbの

  class SimpleServer
    def SimpleServer.start
      yield
    end
  end

というののyieldというのなど、rubyならではの記法についての理解がやっぱり甘いっていうことを再認識

そのためMacbook Airと一緒に携帯してたはじめてのRubyの7章のメソッドの所を写経しながら再度勉強しなおしました
この章の中でレシーバの省略という項目があり

class Laputa
  def hover
    vibrate
  end
  def vibrate
    p "vibrated"
  end
end
takalamakhan = Laputa.new
takalamakhan.hover

こんなサンプルがあったのですが3行目のvibrateの箇所がメソッド呼び出しのレシーバを省略した書き方ということで凄い違和感があったのですが

この場合はレシーバであるselfに対してメソッドを呼び出します。selfは、C++Java,C#でいうthisの相当です。

という説明で「あーなるほどね。」と納得。

要は

  def hover
    self.vibrate
  end

というのと同じっていうことかー

納得したついでに、javascriptで書き直してみた。

var Laputa = function(){};
Laputa.prototype = {
  hover:function() {
    this.vibrate();
  },
  vibrate:function(){
    alert("vibrated");
  }
};
var takalamakhan = new Laputa();
takalamakhan.hover(); // -> vibrated