* 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" を順に押下する。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS