From: Daniel Carrera Date: 2003-01-28T10:04:25+09:00 Subject: Re: Parsing: x = y || raise "error" dir = ARGV.shift || raise "Require directory argument" Is probably getting parsed as: dir = (ARGV.shift || raise) "Require directory argument" When you type dir = ARGV.shift || raise("Require directory argument") Ruby parses it as dir = ARGV.shift || (raise("Require directory argument")) Use 'or' instead of ||, it has lower precedence. On Tue, Jan 28, 2003 at 09:55:59AM +0900, Gavin Sinclair wrote: > I more or less commonly use the following idiom (taken from recent > code): > > dir = ARGV.shift || raise "Require directory argument" > > Then I find that it fails: > > /home/gavin/bin/ckcr:3: parse error > /home/gavin/bin/ckcr:3: warning: useless use of a literal in void context > > This fixes it: > > dir = ARGV.shift || raise("Require directory argument") > > Can anyone explain why the parentheses are required? Not a critical > error or anything. I've just always wanted to know but been afraid to > ask. > > Regards, > Gavin > > -- Daniel Carrera Graduate Teaching Assistant. Math Dept. University of Maryland. (301) 405-5137