假设我得到了这个输入.txt
10000, 150
345, 32
当我从输入文件初始化为类似这样的类时:
class A
def initialize(b,c)
@b = b
@c = c
end
end
input = File.open("data", "r")
input.each do |line|
l = line.split(',')
arr << A.new(l[0], l[1])
end
p arr
我得到这个输出[#A:0x00000002816440 @ b =“10000”,@ c =“150”&gt;
我怎样才能把它变成像这样的数组
[[10000, 150][345, 32]]
答案 0 :(得分:2)
Neil提出的改进。
File.readlines("input.txt").map{|s| s.split(",").map(&:to_i)}
# => [[10000, 150], [345, 32]]
答案 1 :(得分:1)
假设input.txt
包含以下数据:
10000, 150
500, 10
8000, 171
45, 92
我可以想到如下:
class A
def initialize(b,c)
@b = b
@c = c
end
def attrs
instance_variables.map{|var| instance_variable_get(var).to_i}
end
end
input = File.open('/home/kirti/Ruby/input.txt', "r")
ary = input.each_with_object([]) do |line,arr|
l = line.split(',')
arr << A.new(*l).attrs
end
ary
# => [[10000, 150], [500, 10], [8000, 171], [45, 92]]
答案 2 :(得分:0)
我认为你可以做两件事:
将字符串输入转换为数字
假设您已进一步使用class A
,请在课程中添加.to_a
方法
你可以在多个地方做第一部分,但一件简单的事情是让课程对转换进行整理。然后生成的代码如下所示:
class A
def initialize(b,c)
@b = b.to_i
@c = c.to_i
end
def to_a
[ @b, @c ]
end
end
input = File.open("data", "r")
input.each do |line|
l = line.split(',')
arr << A.new(l[0], l[1]).to_a
end
p arr