Open spesnova717 opened 1 week ago
sprintf
nil
TypeError
chapEnc メソッド内で sprintf("%.3f", c.w) を使用している際に、c.w が nil となっているケースがあり、その結果 TypeError: can't convert nil into Float エラーが発生します。特に、あるチャプターの幅(c.w が秒数を表す)が 0秒 である場合に、この問題が発生します。
chapEnc
sprintf("%.3f", c.w)
c.w
TypeError: can't convert nil into Float
0秒
lib/Step5.rb
ss = sprintf("%.3f", c.t) w = sprintf("%.3f", c.w)
Traceback (most recent call last): /opt/CMcut4U-Mk2/lib/Step5.rb:154:in `sprintf': can't convert nil into Float (TypeError)
c.w が nil または 0秒 の場合にデフォルト値 0.0 を設定することで、このエラーを回避します。これにより、sprintf メソッドが nil を受け取ることがなくなり、エラーが発生しなくなります。
0.0
修正後のコードは以下の通りです。
ss = sprintf("%.3f", c.t) w = sprintf("%.3f", c.w || 0.0) # c.w が nil または 0秒の場合は 0.0 に設定
この修正により、c.w が nil または 0秒 の場合でも sprintf が適切に処理されるようになります。
OS: Ubuntu 20.04.1 CPU: core i5-7600 GPU: Nvidia GTX1080Ti Docker環境で動かしています。
特に問題ないようでしたら、上記修正をpull request出してもよいでしょうか?
レポートありがとうございます。 軽微な修正なので、こちらで修正して Ver1.0.7 としました。 ただ、チャプターの幅が nil になるのが根本原因だと思うのですが、こちらではその様なデータに当たった事が無いので、申し訳ありませんが、そこには手を付けていません。
返信が遅くなり申し訳ございません。 修正ありがとうございます。 引き続きどうぞよろしくお願いいたします。
Issue:
sprintf
メソッドでnil
値が渡され、TypeError
が発生する概要
chapEnc
メソッド内でsprintf("%.3f", c.w)
を使用している際に、c.w
がnil
となっているケースがあり、その結果TypeError: can't convert nil into Float
エラーが発生します。特に、あるチャプターの幅(c.w
が秒数を表す)が0秒
である場合に、この問題が発生します。詳細
lib/Step5.rb
chapEnc
メソッド内の以下の部分解決策
c.w
がnil
または0秒
の場合にデフォルト値0.0
を設定することで、このエラーを回避します。これにより、sprintf
メソッドがnil
を受け取ることがなくなり、エラーが発生しなくなります。修正後のコードは以下の通りです。
この修正により、c.w が nil または 0秒 の場合でも sprintf が適切に処理されるようになります。
環境
OS: Ubuntu 20.04.1 CPU: core i5-7600 GPU: Nvidia GTX1080Ti Docker環境で動かしています。
特に問題ないようでしたら、上記修正をpull request出してもよいでしょうか?