ruby yield 关键字用法实例

Posted Liz-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 关键字用法实例的主要内容,如果未能解决你的问题,请参考以下文章

Python yield用法浅析(stackoverflow)

C#中yield用法

C#中yield用法

yield用法

yield关键字详解与三种用法

c# yield关键字原理详解