最近刚开始学习Ruby并且已经碰壁了。我想使用File.exists?但它似乎并没有为我工作。这是我的代码。
puts "Does the output file exist? #{File.exist? to_file}"
puts "Ready, hit RETURN to continue, CTRL-C to abort."
STDIN.gets
我一直收到错误说:“存在?”:无法将nil转换为字符串(TypeError)
有谁知道为什么?
答案 0 :(得分:2)
File::exist?
方法需要 string 值作为其参数。但在您的情况下,由于任何原因,参数to_file
为nil
。现在您使用了".."
,因此发生了插值,因此如果将nil
作为参数提供给方法{{1},则会发生方法调用并抛出错误}。
写如下:
exist?
它不会抛出错误,因为您现在正在将puts "Does the output file exist? #{File.exist?(to_file.to_s)}"
转换为空字符串nil
,或者如果存在任何字符串值,则会返回相同的字符串。请参阅方法NilClass#to_s
。