f



how to get access to the comparison passed

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?
0
Mario
8/29/2016 2:49:31 PM
comp.lang.ruby 48886 articles. 0 followers. Post Follow

2 Replies
357 Views

Similar Articles

[PageSpeed] 42

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/
0
Robert
8/29/2016 7:42:38 PM
Thanks!
I got this one earlier... but I was trying to not be using eval and string

On Monday, August 29, 2016 at 7:42:48 PM UTC, Robert Klemme wrote:
> 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/

0
Mario
8/30/2016 12:48:58 PM
Reply: