2016-05-25 56 views
0

四面觀望,無法找到正確答案來解決我面臨的問題。我想訪問並檢查一個哈希值內的值。代碼如下...訪問並檢查散列內的值

class Bank 

    class AccountMaker 
     attr_accessor :account_number, :name, :balance, :pin 

     def initialize(account_number, name, balance, pin) 
      @account_number = account_number 
      @name = name 
      @balance = balance 
      @pin = pin 
     end 
    end 

    attr_accessor :int_account_number, :int_account_pin 

    def initialize 
     @accounts = {} 
     @int_account_number = int_account_number 
     @int_account_pin = int_account_pin 
    end 

    def add_account(account_number, name, balance, pin) 
     @accounts[account_number] = AccountMaker.new(account_number, name, balance, pin) 
    end 

    def login_screen 

     def account_number_login 
      puts "Please enter your 7 digit account number." 
      account_number = gets.chomp 
      int_account_number = account_number.to_i 

      if @accounts.has_key?(int_account_number) and (/^\w{7}$/ === account_number) 
       thank_you_msg() 
       pin_login(int_account_number) 
      else 
       error_msg() 
       account_number_login() 
      end 
     end 

     def pin_login(int_account_number) 
      puts "Please enter your 4 digit pin." 
      account_pin = gets.chomp 
      int_account_pin = account_pin.to_i #May have to use this later 

      #puts int_account_number, int_account_pin #Used to check if variables come through 

      if (What Should go here?) == int_account_pin #(/^\d{4}$/ === account_pin) 
       thank_you_msg 
       main_menu() 
      else 
       error_msg() 
       pin_login(int_account_number) 
      end 
     end 

     account_number_login() 
    end 

    def main_menu  
    end 

end 

我的問題是如何訪問針的哈希值用戶inputed賬號(鍵)並檢查它是否在用戶輸入相匹配?哈希值包含在pin下的值,但我在嘗試訪問和比較時遇到了最困難的時間。

回答

1

我的問題是如何訪問針的哈希值的 用戶inputed賬號(鍵)並檢查它是否在用戶 條目匹配?哈希值包含:pin下的值,但我最難嘗試訪問並對其進行比較。

像這樣:

@accounts[int_account_number].pin 

片段:

@accounts[int_account_number] 

是AccountMaker實例。而且,一個AccountMaker實例有一個名爲pin()的getter方法(以及命名pin=()的setter方法):

          Declared right there! 
                | 
class AccountMaker         V 
    attr_accessor :account_number, :name, :balance, :pin 

但是,需要你的代碼進行重組 - 從縮進:紅寶石縮進爲2 spaces- - 不是1個空格,而不是4個空格。如果你願意,你可以縮進ruby代碼7個空格 - 但不要指望任何人在公共論壇上發帖時幫助你。所以,你的第一個任務是將你的所有代碼重新縮進2個空格。

接下來,擺脫您的嵌套類:將其移動到頂層並將其重命名爲Account。類名不是動詞 - 它們是名詞。方法是動詞。

然後,擺脫所有嵌套的def's - 嵌套def最有可能不像你想象的那樣工作。相反,所有的def應該被定義在世行的頂層。

+0

真棒我欣賞的幫助和所有的信息。如果它不明顯,我是新來的Ruby。再次感謝 – JCD