标签:
只有断言Boolean与java相同。
空集合或者null是false。0断言为false,其他数字断言为true。
package assert1
class AssertTest {
static main(args) { //空集合或null断言为false def map = [:]; assert !map; def test = null; assert !test;
def list = ["Ubuntu","Android"]; assert list;
//0断言为false,其他数字断言为true。 assert !0; assert 1; assert -1;
assert "Hello";
}
}
|
assert,在Groovy 中叫做Groovy truth。
支持if
and switch
语句,if语句支持断言,例如,在if中,你使用list作为参数,断言该list。
switch语句非常灵活,任何实现了 isCase
方法的类型都能被使用。groovy提供了一个 isCase
方法,使用isInstance的实现:
如果是对象object,使用equals;
如果是Collections,使用contains;
如果是正则表达式,使用matches。
你也能指定一个闭包,来校验一个Boolean值。
package structure
class SwitchTest {
def testingSwitch(input) { def result switch (input) { case 51://对象 result = ‘Object equals‘ break case ~/^Regular.*matching/://正则表达式 result = ‘Pattern match‘ break case 10..50://区间 result = ‘Range contains‘ break case ["Ubuntu", ‘Android‘, 5, 9.12]://集合 result = ‘List contains‘ break case { it instanceof Integer && it < 50 }://闭包 result = ‘Closure boolean‘ break case String://String result = ‘Class isInstance‘ break default: result = ‘Default‘ break } result; }
def test() { assert ‘Object equals‘ == testingSwitch(51) assert ‘Pattern match‘ == testingSwitch("Regular pattern matching") assert ‘Range contains‘ == testingSwitch(13) assert ‘List contains‘ == testingSwitch(‘Ubuntu‘) assert ‘Closure boolean‘ == testingSwitch(9) assert ‘Class isInstance‘ == testingSwitch(‘This is an instance of String‘) assert ‘Default‘ == testingSwitch(200) } static main(args) { SwitchTest t = new SwitchTest(); t.test(); } }
|
如果有多个条件都适合,则第一个case
块被处理。
如果想在switch语句块中,使用自定义的class,只需要实现isCase
方法即可。
当你访问一个对象的某个属性的时候,如果该属性为空值,则会抛出NullPointerException
异常。解决方法:使用?.
package structure
class NullOperator { def firstName; static main(args) { NullOperator obj = null; def firstName = obj.firstName; println firstName; } } |
输出
Caught: java.lang.NullPointerException java.lang.NullPointerException at structure.NullOperator.main(NullOperator.groovy:7) |
package structure
class NullOperator { def firstName; static main(args) { NullOperator obj = null;//(1) def firstName = obj?.firstName; println firstName; } }
|
输出
null |
如果将上例(1)处,改成NullOperator obj = new NullOperator(firstName:"左运松");
则输出:左运松
?:
是很短的java的三元操作符。如果一个表达式的结果是false或者null时,使用它来设置一个默认值。
package structure
class ThreeOperator {
static main(args) { //如果一个对象存在,则返回它;否则,新建一个对象并返回。 //for groovy String test = null; String result2 = test?:new String(); //for java String result3 = (test!=null)?test:new String();
}
}
|
标签:
原文地址:http://www.cnblogs.com/yaoyuan2/p/5719188.html