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"}>
4

1 回答 1

1

该输出#<Set:0x3aad30>意味着结果是一个Set对象,而hex值是该实例对象的内存地址。如果您想查看可以使用的值old_set.inspect您可以在此处阅读有关该Set课程的更多信息

于 2013-03-09T18:36:33.827 回答