这是我的代码:
file = File.open('result.txt', 'w+').read
path = Dir[ENV['HOME'] + '/Desktop/Test/*.txt']
file.puts "this is a #{path} test: "
出现错误:
C:/Users/User/RubymineProjects/Comparison/test.rb:5:in `<top (required)>': private method `puts' called for "":String (NoMethodError)
from -e:1:in `load'
from -e:1:in `<main>'
我的预期结果是:
this is a C:/Users/User/Desktop/Test/new_1.txt test:
我试过这个:
puts "this is a #{path[0]} test: "
实现了我的目标,但是一旦file.puts
它再次出现同样的错误。
答案 0 :(得分:0)
当您在此处执行Folder
时,您将方法file.puts
发送到现在存储在变量#puts
中的字符串对象。这是因为file
方法返回一个字符串。因此,在第一行,File#read
获取file
的内容,然后将其存储在变量result.txt
中puts file. Then you're calling
String#puts`是一个私有方法,所以你不能像上面代码中那样使用它。
如果您打算撰写结果on that string. And
,那么您需要以这种方式使用this is a C:/Users/User/Desktop/Test/new_1.txt test:
方法:
File.open
或者,如果您更喜欢命令式样式而不是块样式:
File.open('result.txt', 'w+') do |file|
path = Dir[ENV['HOME'] + '/Desktop/Test/*.txt']
file.puts "this is a #{path} test: "
# whatever else needs to be written goes here
end