tags:

views:

633

answers:

2

I started dabbling in groovy yesterday. There's an example on the groovy website that I understand but I would like to know more about why it works the way it does. What's confusing me is who[1..-1]. Is this like saying who[1..who.length()-1]? I can't find any documentation on this syntax. Are there any good groovy tutorials out there besides what is on http://groovy.codehaus.org/?

class Greet {
  def name
  Greet(who) { name = who[0].toUpperCase() +
                      who[1..-1] }
  def salute() { println "Hello $name!" }
}

g = new Greet('world')  // create object
g.salute()              // Output "Hello World!"
+4  A: 

You're right -- a negative number in a range basically refers to the end of the list, rather than the beginning. -x is equivalent to who.length()-x.

What you're dealing with is known as slices in Python. (I mention the terminology because searching for something like "groovy slices" may help you find more information, although I don't know if they're actually called "slices" in reference to Groovy.) You can find more information on this particular syntax feature here.

As for other resources, I found the book Groovy in Action to be quite handy for learning Groovy.

mipadi
Thanks! I'll definitely look into *Groovy In Action*.
Lisa
A: 

For several languages, PLEAC is a great resource.

nicerobot