使用Ruby的Code Block创建一个Hash比较函数 _Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > 使用Ruby的Code Block创建一个Hash比较函数

使用Ruby的Code Block创建一个Hash比较函数

 2011/12/8 8:11:14  阿男bluedash  http://bluedash.iteye.com  我要评论(0)
  • 摘要:在使用Ruby开发时,经常会遇到需要比较两个Hash对象的值的场合。代码类似如下:x=Hash.newx[:a]='x'y=Hash.newy[:a]='y'x.keys.eachdo|key|ifx[key]!=y[key]puts"finddifferenceforkey#{key}:x=#{x[key]},y=#{y[key]}"endend这样写代码固然可以,但是代码显得有些零乱,另外这种比较逻辑经常需要复用,能不能把它封装在一个函数当中呢?答案是肯定的
  • 标签:创建 has 使用 函数 Ruby Hash 一个
在使用Ruby开发时,经常会遇到需要比较两个Hash对象的值的场合。代码类似如下:

x = Hash.new
x[:a] = 'x'
y = Hash.new
y[:a] = 'y'

x.keys.each do |key|
	if x[key] != y[key]
		puts "find difference for key #{key}: x = #{x[key]}, y = #{y[key]}"
	end
end


这样写代码固然可以,但是代码显得有些零乱,另外这种比较逻辑经常需要复用,能不能把它封装在一个函数当中呢?答案是肯定的,使用Ruby提供的yield便可以实现:

def diff(hash_a, hash_b)
	hash_a.keys.each do |key|
		if hash_a[key] != hash_b[key]
			yield key
		end
	end
end


使用上面的函数就可以进行Hash的比较了,代码也干净许多,最重要的是逻辑可以复用:

x = Hash.new
x[:a] = 'a'
y = Hash.new
y[:a] = 'b'

diff(x, y) do |key|
	puts "find difference for key #{key}: x = #{x[key]}, y = #{y[key]}"
end
发表评论
用户名: 匿名