2012年4月17日火曜日

Rubyはじめました

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
termtterのpluginを作った。 成果物

気づいたこと(=ハマったこと)・気になったこと・教えていただいたことなど

  • 変数関係:大文字始まり、$, @, @@. これらは名前の一部。@が修飾でついているわけではない。
  • pythonと違い"と'では意味が違う
  • ","でlist/tupleを作ることができる。いらん","がついていると...これはpythonも同じ。
  • コード探査のために知っておくべきmethod:
    • object.methods,
    • object_id,
    • global_variables
    • instance_variables
    • local_variables
  • self以外に引数がないmethodは()なしで呼び出される
  • !とか?をmethod名に含めることができる
  • moduleはmoduleを使って明示的に作る。load/requireはfileを読み込むだけ.module名とfile名に関係がないこともありうる。 c.f. pythonはfileとmoduleが一致している。
  • local_scopeはblock内に閉じる。同名moduleがあっても(再び開いた)としても違うscope扱い
  • ローカル変数のスコープはパース時に静的に確定する。(ブロックの最後まで見て先に変数の集まりが作られている)
  • block: 用はクロージャを渡している。参照
upcomings:
  • eval3使徒
    • eval
    • module_eval
    • instance_eval
またそのうちハマったらpostするかも。 はまった・・・ これの「定数と関数のための名前空間としてのモジュール」を参照。 一言でいうならmodule_functionの話。
module Foo
  K = 1
  def baz
  end
  module_function :baz  
end
なんだこれ、キモい。この言語、こわれてんじゃない?

0 件のコメント: