My question is why the eval of c3 is returning nil. It should fail
saying that undefined local variable just as it did in the case of c2 ?
It’s evaluated as a comment: #hi hello
If you want #{hi} to be replaced by the content of the variable hi, you
should use double quotes:
c4 = “#{hi} hello”
My question is why the eval of c3 is returning nil. It should fail
saying that undefined local variable just as it did in the case of c2 ?
In the second and third cases, everything after (and including) the # is
interpreted as a comment. Thus, you’re executing
hello
hello #{hi}
#{hi} hello
In case 1, hello is a undefined method, so a NameError is raised
In case 2, hello comes before the comment, so it gets executed (with no
arguments). A NameError is raised because it’s an undefined method.
In case 3, hello is part of the comment. Nothing gets executed, so no
NameError is raised.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.