Groovy语法基础

  • 字符串
task printStringClass <<{
  def str1 = '单引号'
  def str2 = "双引号"

  println "单引号定义的字符串类型:"+str1.getClass().name;
  println "双引号定义的字符串类型:"+str2.getClass().name;
}

task printStringVar{
        def name = "张三"
        println '单引号的变量计算:${name}'
        println "双引号过的变量计算:${name}"
}

 

    • 运行结果
      /gradlew printStringClass
      :printStringClass
      单引号定义的字符串类型:java.lang.String
      双引号定义的字符串类型:java.lang.String
      
      BUILD SUCCESSFUL
      
      Total time: 2.219 secs
      
      This build could be faster, please consider using the Gradle Daemon: http://gradle.org/docs/2.4/userguide/gradle_daemon.html
      endian11@endian11-virtual-machine:~/lzw/frame/android-gradle-book-code$ vim build.gradle 
      endian11@endian11-virtual-machine:~/lzw/frame/android-gradle-book-code$ ./gradlew printStringVar
      单引号的变量计算:${name}
      双引号过的变量计算:张三
      :printStringVar UP-TO-DATE
      
      BUILD SUCCESSFUL
      
    • 在Groovy中分号不是必须的
    • 单引号和双引号都可以定义一个字符串常量
    •  单引号不能对字符串里的表达式做运算,双引号可以对字符串常量里面的表达式做运算

  • 集合
    • List
      • task printListStr <<{
          def numList = [1,2,3,4,5,6]
          println numList.getClass().name;
          numList.each{
                println it
          }
        }
        

        endian11@endian11-virtual-machine:~/lzw/frame/android-gradle-book-code$ gradle printListStr

        > Task :printListStr
        java.util.ArrayList
        1
        2
        3
        4
        5
        6

        task printMapStr <<{
          def ahashMap = ['width':123,'heigt':456]
          println ahashMap.getClass().name
          println ahashMap["width"]
          println ahashMap.heigt
        
          ahashMap.each{
            println "key:${it.key},Value:${it.value}"
          }
        }
        

        endian11@endian11-virtual-machine:~/lzw/frame/android-gradle-book-code$ gradle printmapstr

        > Task :printMapStr
        java.util.LinkedHashMap
        123
        456
        key:width,Value:123
        key:heigt,Value:456

  • 方法
    • 括号是可以省略的
      task invokeMethod <<{
        method(1,2)
        method 1,2
      }
      
      def method(int a,int b){
        println a+b
      }

      ./gradlew invokeMethod
      :invokeMethod
      3
      3

    • return是可以不写的
      task printMethodReturn << {
        def add1 = method2 1,2
        def add2 = method2 5,3
      
        println "add1:${add1},add2:${add2}"
      }
      
      def method2(int a, int b){
        if (a > b){
         a
              }else{
                      b
              }
      }
      

      endian11@endian11-virtual-machine:~/lzw/frame/android-gradle-book-code$ ./gradlew printMethodReturn
      :printMethodReturn
      add1:2,add2:5

      BUILD SUCCESSFUL

    • 代码块是可以做为参数被传递的
      • 代码块是一段被花括号包围的代码

posted on 2018-10-15 15:45  endian11  阅读(100)  评论(0编辑  收藏  举报

导航