Ruby中的方法(函數)學習總結_ruby專題

來源:互聯網
上載者:User

1、Ruby中方法名和變數名的命名規則一樣(以小寫字母開頭,單詞之間的分隔使用“_”,),不過可以在方法名後邊帶上!(重磅方法)或者?(布爾類型傳回值)。

2、方法的參數請使用(),參數都是局部變數,可以為這些參數設定預設值,帶“*”的參數是可選動態參數,可以傳入一個或者多個,如果有普通參數,也有選擇性參數,選擇性參數要放在最後,如下邊範例程式碼。

複製代碼 代碼如下:

def read_book(chinese='水滸傳',english='Jane Eyre',*others)
  puts "中文書籍:#{chinese},English book:#{english}"
  temp=''
  others.each do |o|
    temp<<o<<' '
  end
  puts "其他可選書籍:#{temp}"
 
end

read_book
# 輸出:中文書籍:水滸傳,English book:Jane Eyre
read_book('西遊記','Rails','紅樓夢','三國演義','封神演義','隋唐演義')
# 輸出:
# 中文書籍:西遊記,English book:Rails
# 其他可選書籍:紅樓夢 三國演義 封神演義 隋唐演義

3、方法的傳回值不需要進行聲明,預設情況下最後一行代碼為傳回值,但是若有條件判斷返回的情況,需要用return聲明,如下範例程式碼:

複製代碼 代碼如下:

def late_for_work?(minutes)
  return true if minutes>=15
  false
end

late_for_work?(10)    #false
late_for_work?(15)    #true

4、重磅方法是指方法名後帶“!”的方法,普通方法返回的是原對象的一個拷貝,而重磅方法返回的始終是原對象本身,如下邊範例程式碼:

複製代碼 代碼如下:

x='hello'
y=x.upcase
puts "x:#{x},y:#{y}"   #輸出:x:hello,y:HELLO   x的值未發生改變

x='hello'
y=x.upcase!
puts "x:#{x},y:#{y}"   #輸出:x:HELLO,y:HELLO   x的值已經發生改變

5、方法中可以使用別名關鍵字“alias”產生方法的一個拷貝,即使原方法發生了變化,別名拷貝也不會發生變化,如下範例程式碼:

複製代碼 代碼如下:

def show_alias
  puts 'Before alias!'
end
alias alias_foo show_alias
def show_alias
  puts 'After alias!'
end
show_alias   #輸出:After alias!
alias_foo    #輸出:Before alias!

6、Ruby的方法可以一次性返回多個值,不過實質上只是表面看來是返回多個值,本質上是返回了一個數組,數組中儲存多個傳回值,接收時可以直接定義多個變數一次性接收,如下範例程式碼:

複製代碼 代碼如下:

def more_result_foo
 x=5
 y=x*x
 z=y-x+2
 return x,y,z  #返回x,y,z三個值
end
a,b,c=more_result_foo #a,b,c接收返回的x,y,z
m=more_result_foo  #m接收返回的x,y,z
puts a,b,c    #輸出:5 25 22
puts m     #輸出:5 25 22
puts m.class   #輸出:Array

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.