[Ruby]:将类实例成员值传递给另一个类函数
我正在写一个程序来读取文件和搜索其中的文本。我已经写了最初的步骤。在下面给出的代码中,您可以看到一个符号**--**。在这里,我要传递类[CurrentFile]的成员变量值 还请建议我可以在这段代码中做些什么改进[Ruby]:将类实例成员值传递给另一个类函数,ruby,Ruby,我正在写一个程序来读取文件和搜索其中的文本。我已经写了最初的步骤。在下面给出的代码中,您可以看到一个符号**--**。在这里,我要传递类[CurrentFile]的成员变量值 还请建议我可以在这段代码中做些什么改进 class CurrentFile attr_accessor :currentFileName, :currentFileContent end class OpenFile < CurrentFile def OpenFileToRead() #Op
class CurrentFile
attr_accessor :currentFileName, :currentFileContent
end
class OpenFile < CurrentFile
def OpenFileToRead() #Open file as read-only.
thisFile = File.open(** ----- **, 'r')
counter = 1
begin
file = File.new(thisFile, "r")
while (line = file.gets)
puts "#{counter}: #{line}"
counter = counter + 1
end
file.close
rescue => err
puts "Exception: #{err}"
err
end #End of Begin block
end #End of OpenFileToRead
end #End of Class: OpenFile
fileToRead = CurrentFile.new #Create instance of CurrentFile Class
fileToRead.currentFileName = "C:\WorkSpace\SearchText\abc.php" #Set file name to read
myFile = OpenFile.new #Create instance of OpenFile Class
class当前文件
属性访问器:currentFileName,:currentFileContent
结束
类OpenFile错误
放置“异常:#{err}”
犯错误
结束#开始块的结束
结束#OpenFileToRead的结束
结束#课程结束:OpenFile
fileToRead=CurrentFile.new#创建CurrentFile类的实例
fileToRead.currentFileName=“C:\WorkSpace\SearchText\abc.php”#将文件名设置为读取
myFile=OpenFile.new#创建OpenFile类的实例
如果您试图访问实例的currentFileName
属性,我想您只需要编写currentFileName
。您不需要两个类
因为OpenFile继承了CurrentFile,所以在OpenFile中有currentFileName和currentFileContent属性。这意味着您可以在文件中使用currentFileName
。打开
fileToRead = OpenFile.new #Create instance of CurrentFile Class
fileToRead.currentFileName = "C:\WorkSpace\SearchText\abc.php" #Set file name to read
fileToRead.OpenFileToRead
或者,如果您想要两个类,而不是将currentFile实例作为参数传递给OpenFile,并且不继承:
class OpenFile
def initialize(file)
@file = file
end
def OpenFileToRead() #Open file as read-only.
thisFile = File.open(@file.currentFileName, 'r')
counter = 1
begin
file = File.new(thisFile, "r")
while (line = file.gets)
puts "#{counter}: #{line}"
counter = counter + 1
end
file.close
rescue => err
puts "Exception: #{err}"
err
end
end
end
fileToRead = CurrentFile.new #Create instance of CurrentFile Class
fileToRead.currentFileName = "C:\WorkSpace\SearchText\abc.php" #Set file name to read
myFile = OpenFile.new(fileToRead) #Create instance of OpenFile Class
myFile.OpenFileToRead
@Chuck:它给出了错误----[SearchText.rb:13:inOpenFileToRead]:SearchText中CurrentFile:Class(NoMethodError)的未定义方法
currentFileName]。rb:33>退出代码:1]没有理由这样做。而且,事实上,如果你只是简单地将你在问题中发布的代码复制粘贴到一个文件中并运行它,它的工作方式正是你想要的。(显然,你必须先应用查克的建议。)@Chuck,@Jorg:这是一个错误。但是如何在本文中再次发布代码片段?@Rohit:您可以使用问题底部的“编辑”按钮来更新它。不确定您遇到了什么问题,但仅供参考,Ruby中的构造函数是用“def initialize”定义的,而不是“def”这是您的实际代码吗?您在我的答案评论中说的错误不应该出现在这段代码中。@Chuck:我同意。除了这是一段可怕的代码之外,当您复制并粘贴到一个文件中并运行它时,它也可以正常工作。