えんどう
yasuy****@javao*****
2004年 2月 2日 (月) 23:59:21 JST
えんどうです。 >回避するなら、nextでひとつ先読みしておくことでしょうか… >要素がひとつも無い場合もあるでしょうから、、procが呼ばれる前に >まず1行読んどいて、バッファに持っておく。nextはバッファを更新して、 >古いバッファの内容を返す…って具合です。 やはりそのように処理するしかないのですね。call-with-iterator を (define-method call-with-iterator ((r <mysql-result-set>) proc . option) (if (not (slot-ref r 'open)) (raise (make <dbi-exception> :error-code -4 :message "<mysql-result> already closed."))) (let ((is-end #f)) (define (fetch-one-row) (if (not is-end) (let ((one-row (mysql-fetch-row (slot-ref r '%result-set)))) (if (null? one-row) (set! is-end #t)) (if (equal? one-row '()) (set! is-end #t)) one-row) '())) (let ((prev-row (fetch-one-row))) (define (end?) is-end) (define (next) (let ((row prev-row)) (set! prev-row (fetch-one-row)) row)) (proc end? next)))) 上記のように書き換えたところ、 ((10 nobsun) (20 yasuyuki)) という結果が返るようになりました。 -- ENDO Yasuyuki <yasuy****@javao*****> http://www.javaopen.org/~yasuyuki/ (Personal/Japanese Only) http://www.javaopen.org/jfriends/ (Japanese Only)