Ruby 在数组中附加到f时不需要的换行符。每个do | f|

Ruby 在数组中附加到f时不需要的换行符。每个do | f|,ruby,Ruby,为什么会出现以下代码: #!/usr/bin/ruby replacements = ['A1', 'E1', 'I1', 'Y1', 'U1', 'O2', 'O1', 'Ae', 'D1', 'Th', 'o1', 'u1', 'y1', 'ae', 'a1', 'i1', 'th', 'd1', 'o2'] contentsArray = File.readlines(ARGV[0]) wordArray = [] existingWords = [] contentsArray.each

为什么会出现以下代码:

#!/usr/bin/ruby
replacements = ['A1', 'E1', 'I1', 'Y1', 'U1', 'O2', 'O1', 'Ae', 'D1', 'Th', 'o1', 'u1', 'y1', 'ae', 'a1', 'i1', 'th', 'd1', 'o2']
contentsArray = File.readlines(ARGV[0])
wordArray = []
existingWords = []
contentsArray.each do |i|
  i.capitalize!
  i<<"_setn.caf"
  open("hljodsetn_final", "a") do |f|
    puts i
  end
end
在我期待的地方

someString1_setn.caf
someString2_setn.caf
someString3_setn.caf

当我直接尝试类似的事情时,例如
array.each do | f |
并通过
f将
的“someString”
附加到
f
中,您可以从文件中读取行。自然,每一行都以换行结束。然后在后面添加文本

"someString1\n" << "_setn.caf" # => "someString1\n_setn.caf"

readlines文件创建一个行数组,所有行都以换行符结尾(这就是它知道在哪里标识行的结尾)


这将去掉换行符。

它不附加任何内容。新词就在那里。@SergioTulentsev是的,你说得对!我会修改答案。不是鲁比的名字-
contentsArray
。:-)命名约定建议:
contentsArray
->
contents
wordArray
->
words
existingWords
->
existingWords
我假设由于未使用的变量,这不是一个完整的片段,但是如果在循环中多次打开同一文件,你应该把它移到循环外。谢谢你的建议。我只是临时拼凑了一下。
"someString1\n" << "_setn.caf" # => "someString1\n_setn.caf"
contentsArray = File.readlines(ARGV[0]).map(&:chomp)
i.capitalize!.chomp!