#Creating a class that will count words in any object file
class File_handling
attr_reader :fname
def initialize(fname)
#@fname = fname
if File.exist? fname
@fname = fname
else
fname=(fname)#why this doesnt work to call the function below
end
end
def fname=(finame)
if File.exist? finame
@fname = finame
else
p "Enter a good file name >>> "
filename = gets.chomp
@fname=(filename)
end
end
def printfile()
File.foreach(@fname) do |line|
puts line.chomp
end
end
end
f1 = File_handling.new('text.txt')
f1.printfile()
def printfiles(fname)
File.foreach(fname) do |line|
puts line
end
end
p printfiles('test.txt')
我是Ruby的新手,并尝试了解一些事情。我没有真正完成课程,但我想知道为什么调用上面的fname =函数不起作用无论我输入什么文件名,我都不会收到else消息
答案 0 :(得分:0)
因为解释器会认为您想将局部变量fname
的值赋给局部变量fname
。为了使其有效,你必须更明确:
self.fname = fname