上面的是文本输入框:根据groovy的语法输入要显示的内容:
下面的是内容输出框:显示上面的内容:
开始运行groovy:
Hello, World
在 groovyConsole运行窗口的顶部,键入println "Hello, World!"
并且键入 <CTRL-R>.
注意,在控制台窗口中(即 groovyConsole窗口前面的黑色的那个),文体得到打印并且 groovyConsole的下部显示 :
groovy> println "Hello, World!"
null
以"groovy>"开头的行正是控制台处理的文本. "null" 是表达式的值. 因为表达式没有任何值可以打印 ,所以groovyConsole打印为"null"
接下来,再试一些实际的值,用下面的字符串来替换控制台里的文本:
123+45*67
或者你喜欢的任何表达式然后按<CTRL-R> (I'm going to stop telling you to hit <CTRL-R>, I think you get the idea). 现在, groovyConsole下面打印的值有更多的含义.
Variables
You can assign values to variables for later use. Try the following:x = 1
println x
x = new java.util.Date()
println x
x = -3.1499392
println x
x = false
println x
x = "Hi"
println x
Lists and Maps
The Groovy language has built-in support for two important data types, lists and maps (Lists can be operated as arrays in Java language). Lists are used to store ordered collections of data. For example an integer list of your favorite integers might look like this:myList = [1776, -1, 33, 99, 0, 928734928763]
You can access a given item in the list with square bracket notation (indexes start at 0):
println myList[0]
Should result in this output:
1776
You can get the length of the list with the "size" method:
println myList.size()
Should print out:
6
But generally you shouldn't need the length, because unlike Java, the preferred method to loop over all the elements in an list is to use the "each" method, which is described below in the "Code as Data" section.
Another native data structure is called a map. A map is used to store "associative arrays" or "dictionaries". That is unordered collections of heterogeneous, named data. For example, let's say we wanted to store names with IQ scores we might have:
scores = [ "Brett":100, "Pete":"Did not finish", "Andrew":86.87934 ]
Note that each of the values stored in the map is of a different type. Brett's is an integer, Pete's is a string, and Andrew's is a floating point number. We can access the values in a map in two main ways:
println scores["Pete"]
println scores.Pete
Should produce the output:
Did not finish
Did not finish
To add data to a map, the syntax is similar to adding values to an list. For example, if Pete re-took the IQ test and got a 3, we might:
scores["Pete"] = 3
Then later when we get the value back out, it will be 3.
println scores["Pete"]
should print out 3.
Also as an aside, you can create an empty map or an empty list with the following:
emptyMap = [:]
emptyList = []
To make sure the lists are empty, you can run the following lines:
println emptyMap.size()
println emptyList.size()
Should print a size of 0 for the List and the Map.
条件表达式
One of the most important features of any programming language is the ability to execute different code under different conditions. The simplest way to do this is to use the '''if''' construct. For example:amPM = Calendar.getInstance().get(Calendar.AM_PM)
if (amPM == Calendar.AM)
{
println("Good morning")
} else {
println("Good evening")
}
Don't worry too much about the first line, it's just some code to determine whether it is currently before noon or after. The rest of the code executes as follows: first it evaluates the expression in the parentheses, then depending on whether the result is '''true''' or '''false''' it executes the first or the second code block. See the section below on boolean expressions.
Note that the "else" block is not required, but the "then" block is:
amPM = Calendar.getInstance().get(Calendar.AM_PM)
if (amPM == Calendar.AM)
{
println("Have another cup of coffee.")
}
Boolean表达式
There is a special data type in most programming languages that is used to represent truth values, '''true''' and '''false'''. The simplest boolean expression are simply those words. Boolean values can be stored in variables, just like any other data type:myBooleanVariable = true
A more complex boolean expression uses one of the boolean operators:
==
!=
>
>=
<
<=
Most of those are probably pretty intuitive. The equality operator is '''==''' to distinguish from the assignment operator '''='''. The opposite of equality is the '''!=''' operator, that is "not equal"
So some examples:
titanicBoxOffice = 1234600000
titanicDirector = "James Cameron"
trueLiesBoxOffice = 219000000
trueLiesDirector = "James Cameron"
returnOfTheKingBoxOffice = 752200000
returnOfTheKingDirector = "Peter Jackson"
theTwoTowersBoxOffice = 581200000
theTwoTowersDirector = "PeterJackson"
titanicBoxOffice > returnOfTheKingBoxOffice // evaluates to true
titanicBoxOffice >= returnOfTheKingBoxOffice // evaluates to true
titanicBoxOffice >= titanicBoxOffice // evaulates to true
titanicBoxOffice > titanicBoxOffice // evaulates to false
titanicBoxOffice + trueLiesBoxOffice < returnOfTheKingBoxOffice + theTwoTowersBoxOffice // evaluates to false
titanicDirector > returnOfTheKingDirector // evaluates to false, because "J" is before "P"
titanicDirector < returnOfTheKingDirector // evaluates to true
titanicDirector >= "James Cameron" // evaluates to true
titanicDirector == "James Cameron" // evaluates to true
Boolean expressions are especially useful when used in conjunction with the '''if''' construct. For example:
if (titanicBoxOffice + trueLiesBoxOffice > returnOfTheKingBoxOffice + theTwoTowersBoxOffice)
{
println(titanicDirector + " is a better director than " + returnOfTheKingDirector)
}
An especially useful test is to test whether a variable or expression is null (has no value). For example let's say we want to see whether a given key is in a map:
suvMap = ["Acura MDX":""$36,700", "Ford Explorer":""$26,845"]
if (suvMap["Hummer H3"] != null)
{
println("A Hummer H3 will set you back "+suvMap["Hummer H3"]);
}
Generally null is used to indicate the lack of a value in some location.
Debugging and Troubleshooting Tips
Print out the class of a variable that you're interested in with myVar.getClass(). Then look up the documentation for that class.
If you're having trouble with a complex expression, pare it down to a simpler expression and evaluate that. Then build up to your more complex expression.
Try restarting the groovyConsole (this will clear out all the variables so you can start over.
Look for the topic you're interested in in the Groovy User Guide
If you are a Java developer
you might want to check on the Differences from Java
also there afew a few Things to remember
Labels parameters