Ruby Procs

written by justin on January 24th, 2008 @ 11:43 AM

I was writing a script to port some data to a new database last night when I noticed that I had used the same bit of logic several times. I thought I'd better DRY up my code. I could have written a method, but I thought I'd try a proc instead. Below is the result:

Before:

if ssr[27] == 1
  cc3 = 1
elsif ssr[28] == 1
  cc3 = 2
end

if ssr[33] == 1
  cc8 = 1
elsif ssr[34] == 1
  cc8 = 2
end
 
if ssr[39] == 1
  cc13 = 1
elsif ssr[40] == 1
  cc13 = 2
end


if ssr[82] == 1
  da5 = 1
elsif ssr[83] == 1
  da5 = 2
end
After: 

find_true = Proc.new { |field1, field2|
	if field1 == 1
		1
	elsif field2 == 1
		2
	end
}

cc3 = find_true.call(ssr[27],ssr[28])

cc8 = find_true.call(ssr[33],ssr[34])

cc13 = find_true.call(ssr[39],ssr[40])
 
da5 = find_true.call(ssr[82],ssr[83])

Post a comment