« [Ruby] imap_processor | トップページ | [Ruby] 1.9 String and M17N Documentation »

2009年8月 6日 (木)

[Ruby] 今日のハマりどころ

エラーになる理由がわからなくて30分ぐらい悩んだ今日のスクリプト。

記憶を頼りに書くとこんな感じ。

require 'win32ole'
ex = WIN32OLE.new('Excel.Application')
ex.visible = true
book = ex.workbooks.add
sheet = book.worksheets(1)
r = 1, c = 1
sheet.cells[r, c] = 1

irb で確認。

irb(main):001:0> r = 1, c = 1
irb(main):002:0> r
irb(main):003:0> c
irb(main):004:0> r = 1; c = 1
irb(main):005:0> r
irb(main):006:0> c
irb(main):007:0>

そうか、

r = 1, c = 1

じゃなくて

r = 1; c = 1

と書くべきだったのか。

Ruby 1.9 からは、

sheet.cells[r, c] = 1

って書けるように Win32OLE を修正したはずなのに、一瞬、Win32OLE のバグなのかと疑ってしまった。

|

« [Ruby] imap_processor | トップページ | [Ruby] 1.9 String and M17N Documentation »

コメント

この種の関連が強い変数の初期化は、だからこそ一行に書きたいんですよね。
私はそれは
r, c = 1, 1
って書きますね。

投稿: Yugui | 2009年8月 7日 (金) 10時13分

ありがとうございます。

> r, c = 1, 1

の方がRubyらしいですね。

よく考えてみれば、今回は、r も c も 1 で初期化したいだけなので、
r = c = 1
が一番素直だったかと今ふと思いました。

でも違う値で初期化したいときは、Yuguiさんの書き方が、Rubyらしいスタイルですね。

投稿: suke | 2009年8月 7日 (金) 23時44分

この記事へのコメントは終了しました。

« [Ruby] imap_processor | トップページ | [Ruby] 1.9 String and M17N Documentation »