zoukankan      html  css  js  c++  java
  • 13.控制结构

    1       控制结构

    1.1  assert,在Groovy 中叫做Groovy truth

    只有断言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。

    1.2  if 语句块

    支持if and switch 语句,if语句支持断言,例如,在if中,你使用list作为参数,断言该list。

    1.3  switch 语句块和isCase方法

    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 方法即可。

    1.4  ?.空值处理

    当你访问一个对象的某个属性的时候,如果该属性为空值,则会抛出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:"左运松");

    则输出:左运松

    1.5  ?:操作符

    ?:是很短的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();

          

        }

     

    }

  • 相关阅读:
    Json对象与Json字符串互转(4种转换方式)
    Web.config配置文件详解
    jQuery BlockUI Plugin Demo 6(Options)
    jQuery BlockUI Plugin Demo 5(Simple Modal Dialog Example)
    jQuery BlockUI Plugin Demo 4(Element Blocking Examples)
    jQuery BlockUI Plugin Demo 3(Page Blocking Examples)
    jQuery BlockUI Plugin Demo 2
    <configSections> 位置引起的错误
    关于jQuery的cookies插件2.2.0版设置过期时间的说明
    jQuery插件—获取URL参数
  • 原文地址:https://www.cnblogs.com/yaoyuan2/p/5719188.html
Copyright © 2011-2022 走看看