If I have a method like this:
def my_method(comp)
#I know this is not working but to understand what I want
puts comp.to_s
return comp
end
my_method(4==6)
# my_method will return false and print out 4==6
b=7
c=9
life=false
my_method(b<456)
#my_method will return true and print out b<456
my_method(c>=b)
#my_method will return true and print out c>=b
my_method(life)
#my_method will return false and print out life
is that possible?
On 29.08.2016 16:49, Mario Ruiz wrote:
If I have a method like this:
def my_method(comp)
#I know this is not working but to understand what I want
puts comp.to_s
return comp
end
my_method(4==6)
# my_method will return false and print out 4==6
b=7
c=9
life=false
my_method(b<456)
#my_method will return true and print out b<456
my_method(c>=b)
#my_method will return true and print out c>=b
my_method(life)
#my_method will return false and print out life
is that possible?
Sort of, but eval is a security risk:
def my_method(comp, binding)
puts comp
eval(comp, binding)
end
x = 10
y = 20
my_method "x > y", binding
There is a gem which presumably lets you get rid of the second argument: https://rubygems.org/gems/binding_of_caller/
Kind regards
robert
--
remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 285 |
Nodes: | 16 (2 / 14) |
Uptime: | 62:23:31 |
Calls: | 6,488 |
Calls today: | 1 |
Files: | 12,096 |
Messages: | 5,274,568 |