[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 のバグなのかと疑ってしまった。
| 固定リンク
この記事へのコメントは終了しました。
コメント
この種の関連が強い変数の初期化は、だからこそ一行に書きたいんですよね。
私はそれは
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分