code block

  • code block ?種匿名?法
{ puts "Hello" } # 這是一個 block

do
 puts "Blah" # 這也是一個 block
 puts "B
end
  • 內(nèi)部迭代器(iterator)
# 處理數(shù)組 people
people = ["David", "John", "Mary"]
people.each do |person|
 puts person
end
# 反復(fù)五次
5.times { puts "Ruby rocks!" }
# 從一數(shù)到九
1.upto(9) { |x| puts x }
  • 其他迭代?式
# 迭代并造出另一個數(shù)組
a = [ "a", "b", "c", "d" ]
b = a.map {|x| x + "!" }
puts b.inspect
# 結(jié)果是 ["a!", "b!", "c!", "d!"]
# 找出符合條件的值
b = [1,2,3].find_all{ |x| x % 2 == 0 }
b.inspect
# 結(jié)果是 [2]
  • 當(dāng)作判斷條件
# 迭代并根據(jù)條件刪除
a = [ "a", "b", "c" ]
a.delete_if {|x| x >= "b" }
# 結(jié)果是 ["a"]
# 條件排序
[2,1,3].sort! { |a, b| b <=> a }
# 結(jié)果是 [3, 2, 1]
  • functional programming
# 計算總和
(5..10).reduce {|sum, n| sum + n }
# 找出最長字串find the longest word
longest = ["cat", "sheep", "bear"].reduce do |memo,
word|
 ( memo.length > word.length )? memo : word
end
  • 僅執(zhí)??次呼叫 pre- post- processing
file = File.new("testfile", "r")
# ...處理文件
file.close
# 但 Ruby 習(xí)慣?以下寫法
File.open("testfile", "r") do |file|
 # ...處理文件
end
# 文件自動關(guān)閉
  • Yield 在方法中使用 yield 可以執(zhí)行 Code block 參數(shù)
# 定義方法
def call_block
  puts "Start"
  yield
  yield
  puts "End"
end

call_block { puts "Blocks are cool!" }
# 輸出
# "Start"
# "Blocks are cool!"
# "Blocks are cool!"
# "End"

帶有參數(shù)的Code block
def call_block
  yield(1)
  yield(2)
  yield(3)
end

call_block { |i|
  puts "#{i}: Blocks are cool!"
}
# 輸出
# "1: Blocks are cool!"
# "2: Blocks are cool!"
# "3: Blocks are cool!"
  • Proc object 可以將Code block明確轉(zhuǎn)成一個變數(shù):
def call_block(&block)
  block.call(1)
  block.call(2)
  block.call(3)
end

call_block { |i| puts "#{i}: Blocks are cool!" }

# 輸出
# "1: Blocks are cool!"
# "2: Blocks are cool!"
# "3: Blocks are cool!"

# 或是先宣告出 proc object (有三種寫法吸奴,大同小異)
proc_1 = Proc.new { |i| puts "#{i}: Blocks are cool!" }
proc_2 = lambda { |i| puts "#{i}: Blocks are cool!" }
proc_3 = -> (i) {  puts "#{i}: Blocks are cool!"  }

call_block(&proc_1)
call_block(&proc_2)
call_block(&proc_3)

# 分別輸出
# "1: Blocks are cool!"
# "2: Blocks are cool!"
# "3: Blocks are cool!"
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市则奥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌读处,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罚舱,死亡現(xiàn)場離奇詭異绎谦,居然都是意外死亡,警方通過查閱死者的電腦和手機窃肠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來铭拧,“玉大人,你說我怎么就攤上這事恃锉∨槐郏” “怎么了破托?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵歧蒋,是天一觀的道長。 經(jīng)常有香客問我谜洽,道長,這世上最難降的妖魔是什么阐虚? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮实束,結(jié)果婚禮上奥秆,老公的妹妹穿的比我還像新娘咸灿。我一直安慰自己构订,他們只是感情好避矢,可當(dāng)我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著审胸,像睡著了一般亥宿。 火紅的嫁衣襯著肌膚如雪歹嘹。 梳的紋絲不亂的頭發(fā)上箩绍,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天尺上,我揣著相機與錄音圆到,去河邊找鬼。 笑死卑吭,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的豆赏。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼掷邦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了抚岗?” 一聲冷哼從身側(cè)響起或杠,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤宣蔚,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后胚委,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體挟鸠,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡亩冬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了鉴未。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡铜秆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出连茧,到底是詐尸還是另有隱情核蘸,我是刑警寧澤啸驯,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布客扎,位于F島的核電站罚斗,受9級特大地震影響徙鱼,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜袱吆,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绞绒。 院中可真熱鬧婶希,春花似錦蓬衡、人聲如沸喻杈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽家肯。三九已至龄砰,卻和暖如春讨衣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背式镐。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留娘汞,地道東北人。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓你弦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親禽作。 傳聞我的和親對象是個殘疾皇子尸昧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 代碼塊是什么旷偿? 代碼塊是由 {...} 或 do..end 包圍起來的一塊代碼。代碼塊通常用于實現(xiàn)自定義的運算萍程,有...
    bookinstock_閱讀 669評論 1 1
  • 前言 最近代碼量少, 遂在網(wǎng)上找各種資料學(xué)習(xí)代碼的優(yōu)雅之道. GCC Code Block Evaluation...
    Jamp_iOS閱讀 2,923評論 23 44
  • 陽光從縫隙里照進來 看著陽光中的塵土,聽著機器的轟鳴 心中卻如一湖平靜的秋水茫负,清澈卻又漂著黃葉! 正如這一夜的秋涼...
    且看浮生閱讀 246評論 0 1
  • 文/小狐 尋覓一縷清香忍法,初看這個題目有點高中作文的應(yīng)試味道榕吼,但細細品味起來,尋覓清香衍锚,頗有周國平幸福課的影子,那就...
    小狐的冰山閱讀 597評論 0 0
  • 一張圖讓你贏得談判 微信號 how13355789267 歡迎加好友交流 暗號:商學(xué)院 今天平安夜戴质,給大家加點餐度宦,...
    精英之門閱讀 549評論 3 15