sprintf在RubyMotion中被破坏了

时间:2012-05-08 04:36:34

标签: ruby rubymotion

Ruby noob,刚刚安装并安装了RubyMotion,创建了我的第一个程序,我无法让Time(sample)应用程序运行。

每当我尝试使用sprint或其他形式设置字符串格式时(抱歉不知道名字)我只需要恢复格式字符串。

即。 (当我的应用程序在模拟器中运行时,从控制台)

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上安装了默认的ruby,但是如果我尝试运行测试ruby文件(打印“%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]

在Lion 10.7.3上运行,任何建议或想法都会受到赞赏。

感谢。

1 个答案:

答案 0 :(得分:1)

截至2012年5月9日,已经修复了这个问题。确保你使用RubyMotion 1.3(运行sudo motion update)并且字符串格式化将再次起作用。

2012年5月8日更新:Confirmed bug,应在今晚或明天修复。

根据我上面的评论,肯定有一个错误。一个丑陋的黑客来实现这个工作可能是这样的(因为%d仍然适用于sprintf):

@time = 0.1
sprintf("%d", (@time * 10).round).insert(-2, '.')