Friday, 15 March 2013

arguments - if one function result is correct it throws error at another function call in ruby -



arguments - if one function result is correct it throws error at another function call in ruby -

def one(a,b) if < 10 def two(b) if b < 10 print "both function failed" else print "its passed in sec function 2 \n" end end else print "its passed in first function 1 \n" end end one(11,10) two(10)

the output above programme

its passed in first function 1 test2.rb:18:in `<main>': undefined method `two' main:object (nomethoderror)

i know why error occured

test2.rb:18:in `<main>': undefined method `two' main:object (nomethoderror)

but if function 1 fails

def one(a,b) if < 10

if < 10 if true have proceed function two

def one(a,b) if < 10 def two(b) if b < 10

don't define methods within other methods. while ruby technically allows it, it's confusing , should avoided.

in example, run one(11, 10). not execute if < 10 ... end branch, meaning def two(b) ... end never evaluated. result, two method not defined, hence nomethoderror.

you should move two method outside of one:

def one(a,b) if < 10 two(b) else print "its passed in first function 1 \n" end end def two(b) if b < 10 print "both function failed" else print "its passed in sec function 2 \n" end end one(11,10) # passed in first function 1 two(10) # passed in sec function 2

ruby arguments argument-passing function

No comments:

Post a Comment