Ruby Procs
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])
0 comments