ワークブックからシートを読み込むのよ その2 - groovy 2013/10/12

groovyです。
前回からのつづき。
プログラマメモ2: ワークブックからシートを読み込むのよ - groovy
forを使わずやってみた。工夫したつもりだけど。 あとはlogicの中身を実装する感じ。
今回やってて学習したこと、メソッドをクロージャに変換できること。このやり方使えばxxx.yyyが減るから、すっきりするかな。
しかし、はまったのは、比較時に()をつけないと、クロージャーそのままとして比較してしまい、エラーになった。

いろいろためしたけど、この案はぼつにしてforまわし使うんだろうな。

// wbはpoiのワークブックのインスタンス // ワークブックのメソッドをクロージャにする def numberOfSheets = wb.&getNumberOfSheets def getSheetAt = wb.&getSheetAt // ルール定義シート読み飛ばし // @含んでいるシート名のみ対象とする def ruleSkipSheet = { name -> if( name.contains('@') ) return false true } // ルール定義シート読み込み終了 def ruleStop = { pos -> if( numberOfSheets() <= pos ) return false true } // main loop処理 def loop = { pos, logic -> if ( ruleStop(pos) ){ def sheet = getSheetAt(pos) // シート処理 logic(sheet) // 次のシートへ pos += 1 // 再帰呼び出し call(pos, logic) } return } // sheetごとの処理を行う def logic = { sheet -> if( ruleSkipSheet( sheet.getSheetName() ) ) return println " *****OK logic ${ sheet }" } // 処理実行 loop(0, logic)

: