2012-05-08 4 views
3

Ruby noobがRubyMotionをインストールしてインストールしました。私の最初のプログラムが作成され、Time(サンプル)アプリを動作させるのに問題があります。sprintfがRubyMotionで壊れていた

スプリントまたは他のフォームを使用して文字列をフォーマットしようとすると(申し訳ありませんが名前がわかりません)、フォーマット文字列を戻します。

すなわち

Build ./build/iPhoneSimulator-5.1-Development 
Simulate ./build/iPhoneSimulator-5.1-Development/Timer.app 
(main)>> @time = 0.1 
=> 0.0999999940395355 
(main)>> string = sprintf("%.1f", @time) 
=> "%.1f" 
(main)>> string 
=> "%.1f" 
(main)>> "%.1f" % @time 
=> "%.1f" 
(main)>> 

シミュレータにおける実際のアプリケーションで同じ結果(私のアプリは、シミュレータで実行されている間、コンソールから)。

Macにはデフォルトのルビーがインストールされていますが、テストルビーファイル( "%05d"%123)を印刷しようとすると予想どおりの結果が得られます。

/usr/bin/ruby -v 
ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0] 
/Library/RubyMotion/bin/ruby -v 
MacRuby 0.12 (ruby 1.9.2) [universal-darwin11.0, i386] 

ライオン10.7.3で動作している、アドバイスやアイデアがありがたいです。

ありがとうございました。

+0

。 'NSString.stringWithFormat'("%0.1f "、0.1)' '' '0.0 '')を返します。私はサポートチケットを申請しています。 –

+0

また、これはRubyMotion 1.1または1.2での回帰だと思います。 1.0でLocationsサンプルアプリケーションを実行したときに座標が表示されていましたが、画面上に "%0.3f、%0.3f"と表示されます。また、 –

+0

の[Githubで開かれた問題](https://github.com/HipByte/RubyMotionSamples/issues/4)もあります。修正されました。 'sudo motion update 'を実行してアップデートを入手してください。 –

答えて

1

5/9/12現在、この問題は修正されています。 RubyMotion 1.3(run sudo motion update)を使用していることを確認してください。文字列の書式設定が再び機能します。

更新5/8/12:Confirmed bugは、この夕方または明日に修正する必要があります。

上記の私のコメントには、間違いなくバグがあります。 (%dはまだsprintfのために正常に動作しますので)この作業を取得するために醜いハックは、このようなものが考えられます。

これはRubyMotionのバグのようです
@time = 0.1 
sprintf("%d", (@time * 10).round).insert(-2, '.') 
+0

RubyMotionを1.3にアップデートして、もう一度私のテストを走らせてみましたが、うまく動いているようです。 –

関連する問題