Ruby - 不会将文件加载到数组中

joh*_*ohk 0 ruby arrays

我有ruby的问题,它不会将我拥有的文件加载到指定的数组中.

class Dancer
  def Initialize (couplenumber, score1, score2, score3, score4, score5, score6, score7)
    @couplenumber = couplenumber
    @score1 = score1
    @score2 = score2
    @score3 = score3
    @score4 = score4
    @score5 = score5
    @score6 = score6
    @score7 = score7
  end

  def show()
    return "Couple Number: #{@couplenumber}. Scores: #{@score1}, #{@score2}, #{@score3}, #{@score4}, #{@score5}, #{@score6}, #{@score7}."
  end
end

results = File.open("danceresult.txt", "r+")
dancescores = []

# Splitting dance scores with "," and putting into arrays.
for dancers in results
  a = dancers.split(",")
  couplenumber = a[0]
  score1 = a[1]
  score2 = a[2]
  score3 = a[3]
  score4 = a[4]
  score5 = a[5]
  score6 = a[6]
  score7 = a[7]
  dancescores << Dancer.new
end

dancescores.each do |dance|
  puts dance.show
end
Run Code Online (Sandbox Code Playgroud)

我的问题是Ruby只传递了这个:

Couple Number: . Scores: , , , , , , .
Couple Number: . Scores: , , , , , , .
Couple Number: . Scores: , , , , , , .
Couple Number: . Scores: , , , , , , .
Couple Number: . Scores: , , , , , , .
Couple Number: . Scores: , , , , , , .
Run Code Online (Sandbox Code Playgroud)

我不是很擅长编码,仍然在努力学习:-)在此先感谢.

小智 6

你错过了传递参数 Dancer

我还建议你的代码重构为这样的:

class Dancer
  def initialize( couplenumber, *scores )
    @couplenumber, @scores = couplenumber, scores
  end

  def show
    return "Couple Number: #{@couplenumber}. Scores: #{@scores.join(', ')}"
  end
end

file = "danceresult.txt"
dancescores = File.readlines(file).map do |line|
  Dancer.new *line.split(",")
end
Run Code Online (Sandbox Code Playgroud)