ruby 函數

函數

lambda? :判斷proc對象是proc還是lambda
.arity :獲取proc對象的參數個數,當有*修飾的可變參數時返回一個負數(-n-1),n表示對象必須有n個參數
clone :拷貝數據(凍結和受污染狀態也會被拷貝)
dup :拷貝數據(不會拷貝狀態)
freeze:凍結對象(凍結對象不可被改變)
frozen?: 是否被凍結
taint:污染
untaint: 接觸污染
tainted?:是否被污染
4.upto(6){|x|} :integer 常用迭代器之一 #  456
4.downto(1){|x|} :integer 常用迭代器之一 #  4321
3.times{|x|} :integer 常用迭代器之一 # 012
2.3.4 :295 > 3.times
 => #<Enumerator: 3:times>  # 返回Enumerator對象
0.step :浮點數數值迭代
each{|x|} :Array Hash Range  等許多類都有此迭代器
each_with_index do |line,number|  代碼區 end :基于each的迭代器
collect : 也叫做map 為所有元素執行代碼塊,將返回值組合到數組并返回
[1,2,3].collect{|x| x*x} # =>  [1,4,9]
select : 為所有元素執行代碼塊,選取返回值不是false或nil的元素組合到數組并返回
(1..10).select{|x| x%2 == 0} #=> [2,4,6,8,10]
reject : 為所有元素執行代碼塊,選取返回值是false或nil的元素組合到數組并返回
(1..10).reject{|x| x%2 == 0} #=> [1,3,5,7,9]
inject : 第一個參數是上次迭代的返回值,第二個參事是迭代對象的下一個元素
data = [2,5,3,4]
data.inject {|sum,x| sum+x}   # => 14 (2+5+3+4)
data.inject(1.0){|p,x| p*x} # => 120.0  (1.0*2*5*3*4)
data.inject {|m,x| m>x? m : x} # => 5
枚舉器的方法:Enumerable  
obj.to_enum :實例枚舉器的常用方法,object對象的(不帶代碼塊)
obj.enum_for(:each_char).map{|c| c.succ} : 帶代碼塊
2.3.4 :291 > s = "hello"
 => "hello" 
2.3.4 :292 > s.enum_for(:each_char).map{|x| x.succ}
 => ["i", "f", "m", "m", "p"] 
2.3.4 :293 > 
str.chars : char數組
iterator = 9.downto(1)
begin
  p iterator.next while true
  rescue StopIteration
  p "finsh"
end   :外部迭代器的寫法,外部迭代器比內部迭代器更加的靈活
iterator = 9.downto(1)
loop do
  p iterator.next
end :簡化rescue從句而包含的一個隱式從句外部迭代器語句
2.3.4 :008 > def itttttt(xxxxx)
2.3.4 :009?>   loop do
2.3.4 :010 >       yield xxxxx.next
2.3.4 :011?>     end
2.3.4 :012?>   end
 => :itttttt 
2.3.4 :013 > itttttt(9.downto(1)){|x| p x} # => 9 8 7 6 5 4 3 2 1

函數解析

array[0]  # same as:array.[] 0    array 有個名為[]的函數,參數只有一個 0
array[0]='aaaa' #same as: array.[]= 0,'aaaa'  array有個名為[]= 的函數 參數有兩個0,'aaaa'
obj.m = v # 解釋器解釋為  obj.m= {v}
o.m += 1 # same as: o.m=(o.m()+1)
o[x] -= 2 # same as: o.[]= (x,o.[](x) - 2)

操作符

  1. 展開操作符:*
    右值以開頭,則意味他是一個數組,她的每個元素都應該是一個右值
    左值以
    開頭(左側只能有一個*),則意味所有多出來的右值都放入一個數組且賦給該左值
2.3.4 :186 >   x,y,z = 1,*[2,3] #same as:x,y,z = 1,2,3
 => [1, 2, 3] 
2.3.4 :187 > x
 => 1 
2.3.4 :188 > y
 => 2 
2.3.4 :189 > z
 => 3 
2.3.4 :190 > x,*y = 1,2,3
 => [1, 2, 3] 
2.3.4 :191 > x
 => 1 
2.3.4 :192 > y
 => [2, 3] 
  1. 追加 位移:<< >>
    二進制左右位移
2.3.4 :220 > 172.to_s(2)
 => "10101100" 
2.3.4 :221 > two = 172.to_s(2).to_i(2)
 => 172 
2.3.4 :222 > two >> 1
 => 86 
2.3.4 :223 > 86.to_s(2)
 => "1010110" 
2.3.4 :224 > two << 1
 => 344 
2.3.4 :225 > 344.to_s(2)
 => "101011000" 
2.3.4 :226 > 

字符串追加:

2.3.4 :212 > message = "message"
 => "message" 
2.3.4 :213 > message << "is mes"
 => "messageis mes" 
2.3.4 :214 > message
 => "messageis mes" 
2.3.4 :215 > 

===,=,! :這三個我特么也不是很懂啊。。。。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,001評論 6 537
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,786評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,986評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,204評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,964評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,354評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,410評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,554評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,106評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,918評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,093評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,648評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,342評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,755評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,009評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,839評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,107評論 2 375

推薦閱讀更多精彩內容

  • Ruby雖然是一個完全面向對象的語言,但是在它的發展過程中,也在不斷的借鑒函數式編程的思想,來幫助改進語言的特性。...
    falm閱讀 2,010評論 1 9
  • 命令行參數 新建文件 hello.rb 執行 輸出 讀取文件 新建文件 read.rb 執行 逐行查找 新建文件 ...
    饑人谷_若愚閱讀 768評論 0 1
  • 字符串處理函數1.返回字符串的長度 str.length => integer 2.判斷字符串中是否包含另一個串 ...
    小安靜子閱讀 982評論 0 1
  • 本來想寫一篇關于數組遍歷處理函數的總結的,寫著寫著發現還是得把這兩個函數單獨抽出了講上一講,我是直接跳進injec...
    又不行了閱讀 1,938評論 0 0
  • 看到上圖這么微商我是拒絕的,然而今天在女友非常強烈的安利下,我勉為其難試了下她的這條皮褲。 我!的!天!非常非常非...
    叫我女王陛下閱讀 208評論 0 0