当我在终端上运行这段 Ruby 代码时,它不会在控制台上显示“it works”。这段代码有什么问题?
f = File.open("hello.txt", 'w')
f.puts "Hello World"
text = IO.read("hello.txt")
if text == "Hello World"
puts "it works"
end
最佳答案
有几点需要注意。
1) 当您使用 File
写入文件时,它会缓冲数据以提高效率(而不是重复写入文件系统),因此您需要 flush
句柄以确保实际写入任何缓冲数据。您可以通过调用 flush
显式执行此操作,也可以通过关闭句柄隐式执行此操作。
2) 当您从用户输入获取
或从文件系统读取时,去除
任何尾随空白字符通常是个好主意。如果没有:text.strip == "Hello World"
3) 与其打开同一个文件的两个句柄(通过 File
和 IO
),您可以通过从 切换来打开单个读/写流w
到 w+
。然后您可以倒回到正确的位置。
下面是该方法的外观:
f = File.new("hello.txt", 'w+')
f.puts "Hello World"
f.rewind
text = f.read.strip
puts "It works" if text == "Hello World"
关于Ruby 终端代码不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38145384/