Ruby:'没有从Zed Shaw的LRTHW中将nil隐式转换为String(TypeError)

时间:2015-10-09 03:18:24

标签: ruby

刚刚开始学习编程,并从Ruby开始。从Zed Shaw的艰难学习Ruby

做一些复制打字练习

在练习15和16中,覆盖打开文件时,我尝试运行时会遇到同样的问题。

target = open(filename, 'w')

我收到消息:

  

say.rb:10:open': no implicit conversion of nil into String (TypeError) from say.rb:10:in'

这是什么意思?我该如何纠正这个?

提前致谢!

Direct screen shot from the LRTHW website

2 个答案:

答案 0 :(得分:0)

我认为您的filename变量值未初始化或为零。

filename = "path/to/file"
target = open(filename, 'w') if filename.present?

答案 1 :(得分:-1)

每个人:谢谢你盯着我的问题。我让我的一个朋友弄明白问题是什么。我忘记了练习的重点是使用ARGV,这是缺失的环节,因而也就是错误。第一行代码是:filename = ARGV.first。当我在终端上运行它时,我将其作为> ruby​​ say.rb运行,之后没有提交文件名。因此,在提示符下,我应该将其提交为> ruby​​ say.rb whateverfilename.doc。所以,没有这个,该计划没有什么可以咀嚼的。再次感谢!