標籤:val err led des style 例子 generate c# 部分
yield關鍵字我是這樣理解,用它來佔一個位置,先標記下這個地方將來要寫代碼的,等到調用的時候,再來編寫具體的代碼。有點像函數指標,或者C#裡的委託,但其實並不太一樣。
寫測試介面的時候,每次的assert傳回值不一樣,但函數體大部分是相同的,只有參數不同。正好最近看到了yield,就熟悉一下用法,可以把assert這部分code寫在yield 的位置。
例子主要就是test_nodes這個函數的定義 和 它的調用。
Code:
1 def generate_nodes(n=3) 2 return n 3 end 4 5 def add_nodes(url,node) 6 if node % 2 == 0 7 return "message", 200 8 else 9 return "error", 50010 end11 end12 13 def test_nodes(nodes)14 nodes.each do |node|15 2.times do16 #somecode 17 restr, rcode = add_nodes("url",node)18 yield restr, rcode, node19 end20 end21 end22 23 nodes_list = [generate_nodes, generate_nodes(4),generate_nodes(5),generate_nodes(6)]24 25 test_nodes(nodes_list) do |restr, rcode, node|26 if restr == "message" && rcode == 200 then #assert return value27 puts "success"28 else29 puts "failed: node is #{node}"30 end31 end
ruby yield 關鍵字用法執行個體