zoukankan      html  css  js  c++  java
  • Grails笔记四:Groovy特性小结

    在学习Grails的时候与Groovy打交道不可避免,虽然不必太深刻,但多知道一些特性也是很有帮助的~


    1.相除后获取整数

    使用intdiv()方法可以获得整数,注意点是这个方法只适用两个整数相除,浮点数不行

    2.Groovy的if,while可接受的类型

    • boolean
    • 数字  0为假,其它为真
    • 字符串 空字符""为假,其它为真
    • 对象  为null时假,其它为真
    • 集合  集合属性length=0为假,其它为真

    3.闭包的访问方式

    Groovy中的闭包和方法很类似,其直接调用方式有两种:

    //定义一个闭包
    def clos={println it}
    //第一种闭包调用
    clos.call('奥巴马')
    //第二种闭包调用
    clos('笨拉灯')
    

     4.Groovy中Map的key值如何是一个变量

    在Groovy中,Map的key值默认是字符串,如果希望key值是变量的话,需要用()将变量括起来:

    def x='123'
    def map=[(x):45]
    println map.toString()
    

     5.Groovy类与java类的两个不同点

      1.Groovy类存在基于Map初始化的默认构造函数

    //构造一个Groovy类
    class cs{
        String name
    }
    //实例化
    def c=new cs(name:'tita')
    //或者
    def cc=new cs([name:'tt'])
    

       2.Groovy类的属性字段没有定义访问限定符,默认为private

    class A{String name}
    //等价
    class A1{
        private String name
        public String getName(){
            name
        }
        public void setName(String name){
            this.name=name
        }
    }
    def a=new A(name:'tt')
    //也就是说以下等价
    println a.name
    println a.getName()
    

    6.List的*号运算符用法

    List有一个非常有用的运算符——*,在两种情况下很有用:

      1.将*号放在一个List对象的后面,如

    def list=[1,2,3]
    def temp=list*.intdiv(2)
    println temp
    

       这时,List对象中的每个元素都会调用*后面的方法,返回的依旧是个List对象

      2.放在范围的前面,如:

     

    def range=0..9
    def temp=[*range]
    println temp
    

       注意[]必不可少,因为这种方式就是为了展开范围生成List对象

  • 相关阅读:
    luogu P1833 樱花 看成混合背包
    luogu P1077 摆花 基础记数dp
    luogu P1095 守望者的逃离 经典dp
    Even Subset Sum Problem CodeForces
    Maximum White Subtree CodeForces
    Sleeping Schedule CodeForces
    Bombs CodeForces
    病毒侵袭持续中 HDU
    病毒侵袭 HDU
    Educational Codeforces Round 35 (Rated for Div. 2)
  • 原文地址:https://www.cnblogs.com/liaochong/p/groovyList.html
Copyright © 2011-2022 走看看