Alle mercoled7 marzo 2007, Robert Dober ha scritto: > if true then > hatever > lseif > end > > now elsif is seen as an undefined method but Not always. In Robert's first example, > if true then > whatever > elseif > end you'll get a NameError (undefined local variable or method `elseif' for main:Object (NameError)) In the following example, instead, you get a syntax error: if x < 0 then puts "x<0" elseif x < 3 then puts "0<=x<3" else puts "x>=3" end The error message is: syntax error, unexpected kTHEN, expecting kEND elseif x < 3 then puts "0<=x<3" ^ Here, ruby doesn't complain because elseif doesn't exist, but because it finds a 'then' where it shouldn't be (not following an if or elsif clause). By the way, being a syntax error (it when the interpreter is parsing the file, not when it executes it), this error is reported whatever the value of x is (and even if x doesn't exist). All these error messages aren't very easy to understand for a novice. To make a comparison with other programming languages, I tried compiling a C program with a similar mistake (in this case writing 'elseif' instead of 'else if'). The program was: int main(){ int a=3; int b=0; if( a==4){ b=1;} elseif(a==2){ b=2;} //should be else if else{ b=3;}} } Compiling with gcc, the error message I got is: test.c: In function 'main': test.c:5: error: expected ';' before '{' token As you can see, the error message doesn't speak of invalid keywords, but just of a missing ; Stefano