This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
| Metaprogramming with String Evaluations | ||
|---|---|---|
| Code | Expected | Actual |
class Numeric
[['add', '+'], ['subtract', '-'],
['multiply', '*',], ['divide', '/']].each do |method, operator|
define_method("#{method}_2") do
method(operator).call(2)
end
end
end
class Numeric
[['add', '+'], ['subtract', '-'],
['multiply', '*',], ['divide', '/']].each do |method, operator|
module_eval %{ def #{method}_2
self #{operator} 2
end }
end
end
4.add_2 |
6 | 6 |
10.divide_2 |
5 | 5 |
class String
def last(n)
self[-n, n]
end
end
"Here's a string.".last(7) |
"string." | "string." |
class String
define_method('last') do |n|
self[-n, n]
end
end
"Here's a string.".last(7) |
"string." | "string." |
class String
module_eval %{def last(n)
self[-n, n]
end}
end
"Here's a string.".last(7) |
"string." | "string." |
String.module_eval %{def last(n)
self[-n, n]
end}
"Here's a string.".last(7) |
"string." | "string." |
class String
eval %{def last(n)
self[-n, n]
end}
end
"Here's a string.".last(7) |
"string." | "string." |