Ruby 终端代码不工作

标签 ruby

当我在终端上运行这段 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) 与其打开同一个文件的两个句柄(通过 FileIO),您可以通过从 切换来打开单个读/写流ww+。然后您可以倒回到正确的位置。

下面是该方法的外观:

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/

相关文章:

ruby-on-rails - 我应该将模型计算保存为属性吗?

Ruby - 方法参数

ruby-on-rails - Ruby delete_if 多个值 - 只有第一个值被删除

Ruby 发布请求 : PDF File

ruby - 实现 gem ruby rake 测试的最新技术/最佳实践是什么?

为我们提供 Rubyish Javascript 的 Javascript 包装器?

ruby - capybara :无法找到 xpath "/html"(Capybara::ElementNotFound)

Ruby Array#sort 它如何知道 block 应该按升序或降序排序

ruby - 按空格拆分字符串

ruby-on-rails - 存在单引号时 RSpec `match` 失败