2015-03-31 60 views
1

我正在学习Ruby语言,我有很多乐趣。 我目前正在使用文件输出练习来处理温度转换器。什么是file.new(“temp.out”,“w”)行代表?

溶液提供下面

print "Hello. Please enter a Celsius value: " 
celsius = gets.to_i 
fahrenheit = (celsius * 9/5) + 32 
puts "saving result to output file 'temp.out'" 

FH = File.new( “temp.out”, “W”)

fh.puts fahrenheit 
fh.close 

突出显示的部分混淆了我。
我们打电话File.new创建一个名为"temp.out"的文件和"w"写入任何输入,直到我们fh.close。我对么?

谢谢!

+0

这类问题可以通过打开IRB并尝试行来解决。请让IRB知道你的第一站是如何工作的。你会发现你会学得更快更好,因为你可以进行实验。 – 2015-04-01 00:03:10

回答

0

默认情况下,puts()会将其输出发送到连接到屏幕的所谓的标准输出File.new()创建一个新文件,该文件被分配给变量fh。由于您创建了写入模式中的文件,因此您可以使用fh将文件写入文件。 fh.puts()将输出发送到分配给变量fh的文件。换句话说,一个裸的puts()语句将输出发送到您的屏幕,但是当您在文件的前面输入puts()时,输出将转到该文件。

你也可以这样写那些声明:

File.open("temp.out", "w") do |f| 
    f.puts fahrenheit 
end 

关于这样写它的妙处是:在end语句执行时,红宝石会自动关闭该文件为您服务。

+0

所以我想我非常接近。谢谢您的回答。现在一切都很清楚! – 2015-03-31 23:13:38