Ruby 學習筆記-方法(method)

為什麼需要方法?

  1. 可以重複使用。
  2. 可以讓程式碼變得更容易理解。

如何定義及使用

定義:
def method_name(param1, param2)  #參數一個或2個都可以,但有多少參數就要有多少引數
    #內容
end

使用:
method_name(param) #把方法呼叫出來

可以預設參數:
def hello (someone = "luna")
    puts "hi,#{someone} welcome my blog"
end
hello()
#如果沒有放入引數,他會出現hi,luna welcome my blog
#如果有放入引數hello("lily"),會出現hi,lily welcome my blog

所謂的回傳值

回傳 = 交回控制權

  呼叫方法與回傳值:
  def calculate(num)
      return 2*num
  end
  puts calculate(3)

以上面方法為例,當執行時會有的步驟

  1. 會先呼叫 calculate 方法,並傳入 3 作為引數
  2. 執行 calculate 方法
  3. return 交還控制權,並同時回傳計算結果
  4. 把計算結果交給呼叫方法的地方,用 puts 方法印出來

return 與 puts、p 差在哪?

當有 return 時,在方法外面呼叫並用 puts 方法印出時會有回傳值,如果沒有 return 在方法外面用 puts 方法印出時會出現 nil,如要有內容印出,須在方法裡使用 puts 方法,才能在沒有回傳值的時候呼叫方法名字並印出內容,唯一例外的是 p 方法他也是印出的方法但他同時也有回傳值的功能,不過不建議用 p 取代 return,例

  def calculate(num)
      return 2 x num    #有return才有回傳值
  end
  puts calculate(3)   #執行時用p方法呼叫並印出內容


  def calculate(num)
      puts 2 x num    #沒有return,他不會回傳東西到呼叫那裡,他只是在方法裡把東西印出來
  end
  p calculate(3)      #先呼叫才執行,這裡會出現nil


  def calculate(num)
       2 x num          #沒有return也沒有puts
  end
  puts calculate(3)   #會出現nil,因為沒有回傳值

問號?與驚嘆號!

  1. 可以放在方法命名裡,但只能放在最後面
  2. 問號通常會回傳真假值
  3. 驚嘆號通常表示要注意 Ruby 官網上的說明
comments powered by Disqus