理系学生日記

おまえはいつまで学生気分なのか

Ruby を勉強しなきゃならなくなった

大学院のころ,研究室の先輩であるコイさんと一年に一つずつプログラミング言語覚えていきたいですねって話とかをしていて,じゃぁ次は lisp やりたいです!!って言ってたんですけど,どうも Ruby の勉強をしなくちゃいけなくなりました.

ぼくは Perl がとても好きで,ちょっと Perl と Ruby はさすがにカブるところがあるよなーって思ってるんですけど,Ruby 自体はまったく書いたことがないですから,まだよくわかりません.

とりあえず勉強を始めてみますが,勉強しなくちゃいけないことは他にも山のようにあって,どのくらいのペースで Ruby の勉強ができるのかは全くもってわかりません ><

  • ドキュメントは ri コマンドで見ることができる
  • 一行に一文ずつ書く限り,セミコロンは必要ない
  • メソッド定義は大括弧ではなく,end で閉じる
  • 文字列への変数値の埋め込みは,#{...}で行う
world = "world"
puts "hello #{world}"
  • メソッドの戻り値は,メソッド内で最後に評価された値
  • グローバル変数の先頭は$,インスタンス変数は@,クラス変数は@@がつく.
  • クラス名,モジュール名,定数は先頭が大文字
    • 命名規則に制約があるのにはまだ慣れてない.このへんは完全に慣れの問題.
  • %w は Perl でいうところの qw.
    • 別に大括弧で囲まなくてもよくて,他の記号でも大丈夫なところも同じ.
a = %w!abc def hij klm!
  • 配列(Array)はブラケット,ハッシュはブレースで構築できる.
    • new のエイリアス?
    • ハッシュのキーを String にするときは,ダブル or シングルクオテーションで囲む必要があるのは若干ストレス
a = { hello   => 'world' } # エラー
a = { 'hello' => 'world' } ok
    • キーがオブジェクトでないといけない規則で,クオテーションで囲むと String オブジェクトが生成されて幸せ,bareword だとオブジェクトが生成されずにあうあう,みたいな感じ?
  • ハッシュの要素へのアクセスも配列と同じくブラケットを使う
a['hello'] # 'world'
  • ハッシュの値の初期値は,ハッシュ構築時に Hash::new に渡す引数によって定めることができる.デフォルトは nil.
    • Hash::new にオブジェクトを渡すと,そのオブジェクトが返される.コピーが返されるわけではない.
    • 以下がそれを示す例(ドキュメントから)
h = Hash.new("Go Fish")
h["c"].upcase!   #=> "GO FISH"
h["d"]           #=> "GO FISH"
  • if 文は if-elsif-else.Perl と同じ.ただし end で閉じる.
  • while 文も end 閉じ.
  • ブロックのデリミタとしては,1行のブロックにはブレースを,それ以上の行数のブロックには do/end を使うのが慣例

今日はここまで.