问:我正在将银行帐户计划作为一个练习项目。我无法使YAML文件正常工作。该文件会生成,但是当我打开它时,该文件将不包含程序运行时输入的任何信息。
需要 “ yaml”
类BankAccount attr_accessor :first_name ,:last_name ,:address ,:your_account def初始化@your_account = [] open ()end def如果File为open 。存在?(“ accountinfo.yml” )@your_account = YAML 。LOAD_FILE (“accountinfo.yml” )结束结束DEF保存文件。打开(“ accountinfo.yml”
, “ r +” ) 做 | 文件|
文件。写(your_account 。to_yaml )年底结束DEF new_account (FIRST_NAME ,姓氏,地址)看跌期权“输入你的名字:”自我。first_name =获取。chomp将“输入您的姓氏”作为自我。last_name =获取。格格看跌期权“输入您的地址:”自我。
地址 = 获取。格格
自我。your_account = [如first_name ,姓氏,地址]端DEF account_review (your_account )放@your_acccount结束DEF运行循环做看跌期权“欢迎来到银行”。放“1.创建新帐户”看跌期权“2.审核您的帐户信息”看跌期权“3.查询余额”看跌期权“4.退出”看跌期权“输入您的选择:”
得到。格格
情况下输入时'1' new_account (如first_name ,姓氏,地址)时'2' account_review (your_account )当'4'保存()断裂端结束端端BANK_ACCOUNT =的BankAccount 。新的bank_account 。跑
答:这里有一些建议。首先请记住,在Ruby中,您不需要在方法末尾添加空括号。
根据您的操作,我并没有真正看到创建attr_accessors的需要,您实际上只是在处理我所知道的在变量中传递数据。如果通过类的实例开始设置数据,那将是另一回事。
现在我没有在这里复制所有代码,只是在阅读和写作部分重复了,因此您可以看到我的想法。
需要 “ yaml”
类BankAccount def初始化@your_account = [] load_account_details end def load_account_details除非File 。存在吗?(“ accountinfo.yml” )文件。new (“ accountinfo.yml” ,“ w +” )结尾@your_account = YAML 。load_file (“ accountinfo.yml” )end def save_account_details first_name = “ Tim”
“耐特”
地址= “356街” @your_account = [如first_name ,姓氏,地址]文件。开放(“accountinfo.yml” ,“R +” )做| f | f 。写(@your_account 。to_yaml )结束端端BANK_ACCOUNT =的BankAccount 。新的bank_account 。save_account_details
首先要注意的是,我正在创建YAML文件(如果它不存在),如果您想将数据写入文件,那将非常重要。否则,您将得到文件不存在的错误。还要注意,在移动数据时,我只是引用@your_account实例变量。