* Ruby Tips [#readdb9f] Ruby を使い始めました。Perl と同じだろうと思ったら、細かいところで結構つまずきます。つまずかないためにも、いろいろ備忘録を残したいと思います。 参考になるサイト。 - [[Rubyリファレンスマニュアル:http://www.ruby-lang.org/ja/man/]] - [[逆引きRuby:http://www.namaraii.com/rubytips/]] - [[Rubyソースコード完全解説サポートページ:http://i.loveruby.net/ja/rhg/]] ** インストール [#afc4a1c8] - WinXP で、binary の 1.9.0 はインストール成功した。 - VineLinux2.6 に 1.8.3 をインストールしようとしたら、make で "tcltklib" 関連のエラーが発生した。1.6.8 をインストールしたら成功した。 - VineLinux2,6 に 1.8.0 をインストールしたら成功した。先述の 1.6 系では動かしたいスクリプトの機能が未実装だったので。 - VineLinux2.6 に 1.8.0 をインストールしたら成功した。先述の 1.6 系では動かしたいスクリプトの機能が未実装だったので。 ** 文法 [#b022f757] *** 多重配列のオブジェクト共有問題 [#k8168554] 多重配列を宣言する場合、次のように宣言するとオブジェクト共有問題が起きる。 new Array(20, new Array(20)) 後半の "new Array" が一度しか new されず、共有されてしまう。そこで、次のようにブロックを使うと問題は解決する。 new Array(20) { new Array(20) } ただしこの方法は、Ruby 1.7 の 2002-10-28 以降でなければならない。 *** インクリメント演算子 [#n204d087] Ruby にはインクリメント演算子がないので、下記のように記述する。 i += 1 *** Perl より型に厳しい [#oeb02439] Perl のような甘い型処理を考えると、思わぬエラーに悩まされる。下記のように文字列型、整数型など変換できる。 Integer('12') String(i) *** 配列やハッシュの初期化 [#o852c449] オブジェクトを空で new する。 list = Array.new() hash = Hash.new() *** 1行 if文の構造 [#jea6de64] if文を 1行で書くためには、条件節のあとにセミコロンが必要である。 if i > 0 ; i = 0 end ** 使い方 [#b2767c81] *** offlineモード [#m372e929] CGI で URLパラメータを処理するスクリプトを、コマンドラインで実行するとこのモードになる。name=value の形で URLパラメータを入力したあと、"Ctrl+D" を押下する(Unix の場合)。Win32環境では、"Ctrl+Z"+"Enter" を順に押下する。