Ruby阵列神秘失败?
这失败了Ruby阵列神秘失败?,ruby,arrays,Ruby,Arrays,这失败了 require 'rinruby' r = RinRuby.new(:echo => false) spreads = [] spreads << 44 spreads << 2 r.assign "test", spreads /var/lib/gems/2.1.0/gems/rinruby-2.0.3/lib/rinruby.rb:656:in `rescue in assign_engine': Unsupported data type on R
require 'rinruby'
r = RinRuby.new(:echo => false)
spreads = []
spreads << 44
spreads << 2
r.assign "test", spreads
/var/lib/gems/2.1.0/gems/rinruby-2.0.3/lib/rinruby.rb:656:in `rescue in assign_engine': Unsupported data type on Ruby's end (RuntimeError)
from /var/lib/gems/2.1.0/gems/rinruby-2.0.3/lib/rinruby.rb:635:in `assign_engine'
from /var/lib/gems/2.1.0/gems/rinruby-2.0.3/lib/rinruby.rb:405:in `assign'
发生了什么事??如果我打印出spreads.class和[44,2].class,它们都会给出一个数组。感谢sawa和Matt的上述评论。它帮助我认识到问题所在。上面的示例简化为更易于阅读,但它包含一个假设,即数组中的真实数据不会导致问题。当我做你给我的sawa测试时,我发现它有效,所以我发现问题一定是我的数据。然后我看到,尽管我的数据看起来与上面的示例数组相同,但它有BigDecimal格式的数字,这是rinruby拒绝的。当我将这些更改为浮动时,它起了作用。是否
排列==[44,2]
返回true
?如果您使用=
而不是|=
,您的演示会更有说服力。读者自然会问的问题是“是否将传播设置为其他内容?”我不会。上面说我再过两天就不能接受了。
require 'rinruby'
r = RinRuby.new(:echo => false)
r.assign "test", [44, 2]