首页 > 代码库 > ruby yield 关键字用法实例

ruby yield 关键字用法实例

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", 500
10     end
11 end
12 
13 def test_nodes(nodes)
14     nodes.each do |node|
15       2.times do
16           #somecode       
17           restr, rcode = add_nodes("url",node)
18           yield restr, rcode, node
19       end
20    end
21 end
22 
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 value
27         puts "success"
28     else
29         puts "failed: node is #{node}"
30     end
31 end

 

ruby yield 关键字用法实例