zoukankan      html  css  js  c++  java
  • Groovy语言学习--语法基础(1)

    2018年11月末,从上家公司离职后进入现在的公司。进入项目以来,发现项目中有很多groovy脚本,以前没接触过groovy,抽时间系统地学一下,也方便后期项目的开发和维护。

    groovy和java的渊源以及和规则引擎的比较,作为白板目前还没评论的资格,学语言当然还是直接撸代码来得实在。好在和java同宗,白板之旅。

    package groovy
    
    /*
     * Print方法 print println 后面必须跟参数 否则会抛groovy.lang.MissingPropertyException
     */
    
    //print  
    //println
    println "helloworld"
    /*
     * 单引号中的内容严格对应java中的String 不对$符号进行转义
     */
    def s1 = 'i am 100 $ dollar'
    println s1
    
    class Person {
        String name
        Integer age
    }
    def person = new Person(name:"john",age:18)
    /*
     * 双引号“”的内容和脚本语言处理有点像,如果字符中有$符号的话,则会表达式先求值
     */
    def s2 = "i am 100 ${person.name} dollar"
    println s2
    
    /*
     * 三个引号 三个单引号或三个双引号 中的字符串支持随意换行 不同处""" """支持$等特殊符号转义 ''' '''不支持,强String类型
     */
    def s3 = """
    tom
        is
            a
                 good
                      boy
    $s1
    
    """
    println s3
    
    def s4 = '''
    tom
        is
            a
                 good
                      boy
    $s1
    
    '''
    println s4
    
    /**
     * 定义函数
     */
    //无参函数
    def fun1() {
        
    }
    
    //有参函数,无需指定参数类型
    def fun2() {
        
    }
    
    //如果制定了函数返回类型,则可不必加关键字def 来定义函数
    String fun3() {
        return "welcome"
    }
    
    //如果不使用return 来设置返回值 ,则函数里最后一句代码的执行结果被设置成返回值  类型不匹配则会报错
    Integer fun4() {
         "a story"
         "about"
         "prince"  //if this is end类型不匹配 GroovyCastException
          4.0    //if this is a number will be return a Integer number 4
    }
    
    println fun4()
    
    
    /*
     * assert 断言 可以简单理解为 比较 进行简单的判断
     */
    def str1 = "abc"
    
    assert str1.size() == 3
    //assert str1.size() != 3  
    
    
    /*
     * 循环
     */
    
    for (int i =0;i<5;i++ ) {
        println i + "for 1"
    }
    
    for (i =0;i<5;i++ ) {
        println i + "for 2"
    }
    
    for (i in 4..8 ) {
        println i-4 + "for 3"
    }
    
    5.times { 
        println "circle"
    }
    
    /*
     *三目运算符
     * 
     */
    def name 
    def result =name != null?name :"name is error"
    println result
    
    /*
     * 异常
     */
    try {
     //      5/0
    }catch(Exception e) {
        print e
    }
    
    try {
    //     5/0
    }catch(anything) {
        print anything
    }
    
    /*
     * Switch
     */
    def age = 36
    def rate
    
    switch (age) {
        case 10..26:
            rate = 0.05
            break
        case 27..36:
            rate = 0.06
            break
        default:
            throw new Exception()
    }
    
    println rate
    
    /*
     * asType 数据类型转换
     */
    def type1 = 100
    def type2 = 200.00
    def type3 = type2.asType(Integer)
    def type4 = type1.asType(String)
    
     println("groovy 语言学习--语法基础(1) ---end ")
  • 相关阅读:
    ARP 协议
    天梯赛L1 题解
    DNS域名系统
    LeetCode 三角形最小路径和
    sql注入漏洞的利用
    XSS漏洞防御
    忘记密码功能漏洞挖掘
    sql bypass
    Web环境搭建组合
    常用数据库的总结
  • 原文地址:https://www.cnblogs.com/slowcity/p/10156256.html
Copyright © 2011-2022 走看看