2013-03-09 66 views
1

我正在从一个文件获取输入并将每行转换为一个数组,然后将该数组转换为一个集合。但在转换时,返回如下所示:数组设置返回一组十六进制值的转换

<Set:0x6268f8> 

但是,在IRB上运行相同的事件会返回正确的值。

require 'set' 
n,p = gets.chomp.split.map { |e| e.to_i } 
arr = gets.chomp.split().map{|x| x.to_i} 
print arr 
puts 
old_set = arr.to_set 
print old_set 
if old_set.length != 1 
    print "NO" 
    exit 
end 

输入文件:

3 6 
0 0 0 0 0 0 
1 1 1 1 1 1 
2 2 2 2 2 2 

在运行此我得到:

C:\Ruby\kumar>ruby so.rb < abc.txt 
[0, 0, 0, 0, 0, 0] 
#<Set:0x3aad30> 

在IRB:

irb(main):010:0> arr = gets.chomp.split("") 
aabbddefyy 
=> ["a", "a", "b", "b", "d", "d", "e", "f", "y", "y"] 
irb(main):011:0> se=arr.to_set 
=> #<Set: {"a", "b", "d", "e", "f", "y"}> 
irb(main):012:0> se 
=> #<Set: {"a", "b", "d", "e", "f", "y"}> 

回答

1

这输出#<Set:0x3aad30>意味着结果是Set目的,并且hex值是该实例对象的内存地址。如果你想看到值,你可以使用old_set.inspect。你可以阅读更多关于Sethere

+0

感谢它工作正常,将尽快接受答案。 – 2013-03-09 18:44:37