Prev: Ocra-fied exe doesn't trace with set_trace_func
Next: Something I expected to work, but didn't!
From: Kerwin Franks on 4 May 2010 05:07 Hello, i need some help here, when i run the following code i get the error below. Why is that, according to the textbook it should work, also looked it up in the cookbook, no luck there too. Thanks in advance. def split_apart(first, *splat, last) puts "first: #{first.inspect}, splat: #{splat.inspect}, " + "last: #{last.inspect}" end split_apart(1,2) split_apart(1, 2, 3) Error: /home/gribota1/NetBeansProjects/Analyzer/lib/rubymethods.rb:32: syntax error, unexpected tIDENTIFIER, expecting tAMPER or '&' def split_apart(first, *splat, last) ^ -- Posted via http://www.ruby-forum.com/.
From: Robert Klemme on 4 May 2010 05:16 2010/5/4 Kerwin Franks <kerwinfranks(a)yahoo.co.uk>: > Hello, i need some help here, when i run the following code i get the > error below. Why is that, according to the textbook it should work, also > looked it up in the cookbook, no luck there too. Thanks in advance. > > def split_apart(first, *splat, last) > puts "first: #{first.inspect}, splat: #{splat.inspect}, " + > "last: #{last.inspect}" > end > > split_apart(1,2) > split_apart(1, 2, 3) > > Error: > > /home/gribota1/NetBeansProjects/Analyzer/lib/rubymethods.rb:32: syntax > error, unexpected tIDENTIFIER, expecting tAMPER or '&' > def split_apart(first, *splat, last) > ^ 10:49:13 test_2$ allruby -ce 'def s(a,*b,c) end' CYGWIN_NT-5.1 padrklemme1 1.7.5(0.225/5/3) 2010-04-12 19:07 i686 Cygwin ======================================== ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin] -e:1: syntax error, unexpected tIDENTIFIER, expecting tAMPER or '&' def s(a,*b,c) end ^ ======================================== ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-cygwin] Syntax OK ======================================== jruby 1.4.0 (ruby 1.8.7 patchlevel 174) (2009-11-02 69fbfa3) (Java HotSpot(TM) Client VM 1.6.0_20) [x86-java] SyntaxError in -e:1: , unexpected tIDENTIFIER def s(a,*b,c) end ^ 11:16:32 test_2$ Cheers robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/
From: Ruby Knight on 4 May 2010 05:31 > > def s(a,*b,c) end > ^ > 11:16:32 test_2$ > > Cheers > > robert Hi Robert, I tried putting end after the last brace but didn't work. I am assuming there is more to that ^ than just for illustrative purposes. Could you explain to me why my code is not working? THanks! -- Posted via http://www.ruby-forum.com/.
From: Justin Collins on 4 May 2010 05:55 Ruby Knight wrote: >> def s(a,*b,c) end >> ^ >> 11:16:32 test_2$ >> >> Cheers >> >> robert >> > > > Hi Robert, > > I tried putting end after the last brace but didn't work. I am assuming > there is more to that ^ than just for illustrative purposes. Could you > explain to me why my code is not working? THanks! > > In Ruby, formal parameters have a particular order: def s(required, default="default", *variable_args, &block) You cannot have a regular required parameter after an optional parameter (denoted by *). The only thing you can have is a block parameter (denoted by &) or nothing at all. -Justin
From: Josh Cheek on 4 May 2010 06:14 [Note: parts of this message were removed to make it a legal post.] On Tue, May 4, 2010 at 4:31 AM, Ruby Knight <kerwinfranks(a)yahoo.co.uk>wrote: > > > > def s(a,*b,c) end > > ^ > > 11:16:32 test_2$ > > > > Cheers > > > > robert > > > Hi Robert, > > I tried putting end after the last brace but didn't work. I am assuming > there is more to that ^ than just for illustrative purposes. Could you > explain to me why my code is not working? THanks! > > -- > Posted via http://www.ruby-forum.com/. > > Robert is saying that it works in 1.9.1 (see how it says Syntax OK), but not 1.8.7 (where it pulls up the same error you had) For 1.9, you can do something like this def split_apart( first , *splat ) raise ArgumentError.new('wrong number of arguments (1 for 2)') if splat.size.zero? last = splat.pop puts "first: #{first.inspect}, splat: #{splat.inspect}, last: #{last.inspect}" end Though I probably wouldn't bother with the error myself, unless writing code for other people. This is similar to how Rails' find method works, it checks the last argument to see if it is a hash, then if it is, it pops it off (look at their example in the comments) http://github.com/rails/rails/blob/master/activesupport/lib/active_support/core_ext/array/extract_options.rb
|
Next
|
Last
Pages: 1 2 3 Prev: Ocra-fied exe doesn't trace with set_trace_func Next: Something I expected to work, but didn't! |