gradle学習ノート(四)Groovy高級用法
前言:
前の2編の学習の中で、Groovyの文法の基礎、閉包に対して一定の理解がありました.Groovyライトコードを使用して言語をプロパティします.
Groovy JDKをよく見て、コードを少なくしてください.同様にGroovy DownLoadを降りると、ローカルファイルのdocumentを直接見ることができ、クエリーの速度が速くなります.
Groovyでのコード書き方:スクリプトとクラス
公式ドキュメント:scripts_versus_classes
Groovyでは,同じコードの書き方でスクリプトを用いてもクラスを用いてもよい.
Groovyコンパイラはこのスクリプトをclassファイルにコンパイルし、スクリプトの内容は生成クラスのmain()メソッドに格納され、メソッドはクラスに定義されます.スクリプトごとにstatic main関数が生成されます. スクリプトのすべてのコードはrun関数に格納されます. スクリプトで関数が定義されている場合、関数はクラス に定義されます.変数の役割ドメインは、変数を定義する方法によって異なります.公式ドキュメント:variablesを参照してください.多すぎてjsに似ています.
公式ドキュメント:Working with IO
IOフロー関連クラス: the java.io.File class : http://docs.groovy-lang.org/latest/html/groovy-jdk/java/io/File.html the java.io.InputStream class: http://docs.groovy-lang.org/latest/html/groovy-jdk/java/io/InputStream.html the java.io.OutputStream class: http://docs.groovy-lang.org/latest/html/groovy-jdk/java/io/OutputStream.html the java.io.Reader class: http://docs.groovy-lang.org/latest/html/groovy-jdk/java/io/Reader.html the java.io.Writer class: http://docs.groovy-lang.org/latest/html/groovy-jdk/java/io/Writer.html the java.nio.file.Path class: http://docs.groovy-lang.org/latest/html/groovy-jdk/java/nio/file/Path.html
1.ファイルを読む
2.書類を書く
公式ドキュメント:processing xml
GroovyにはXMLファイルを操作する2つのツールクラスがあり、APIを表示し、ダウンロードしたapiファイルには次のようなものがあります. groovy.util.XmlParser groovy.util.XmlSlurper
解析XMLという機能はAndroidで使われるはずです.manifest.xmlファイルを操作するからです.
例では、両方の方法で解析できます.
Groovy自体は、新しい言語のようにJVMベースの言語です.ここではgradleに関するGroovyの使用のみを学び,紹介した.その後gradleを学び始め、gradleを深く学ぶ過程で戻ってGroovyの理解と使用を深めると信じています.
本文の関連コードはgithub ioLearnにあります.
***
感謝:AndroidのGradleを深く理解する
前の2編の学習の中で、Groovyの文法の基礎、閉包に対して一定の理解がありました.Groovyライトコードを使用して言語をプロパティします.
Groovy JDKをよく見て、コードを少なくしてください.同様にGroovy DownLoadを降りると、ローカルファイルのdocumentを直接見ることができ、クエリーの速度が速くなります.
Groovyでのコード書き方:スクリプトとクラス
公式ドキュメント:scripts_versus_classes
Groovyでは,同じコードの書き方でスクリプトを用いてもクラスを用いてもよい.
//
class Main {
static void main(String... args) {
println 'Groovy world!'
}
}
// 。
println 'Groovy world!';
A script is always compiled into a class. The Groovy compiler will compile the class for you, with the body of the script copied into a run method. The generated script class will carry all methods into the script class, and assemble all script bodies into the run method. Groovyコンパイラはこのスクリプトをclassファイルにコンパイルし、スクリプトの内容は生成クラスのmain()メソッドに格納され、メソッドはクラスに定義されます.
println "Groovy world"
生成コード:import org.codehaus.groovy.runtime.InvokerHelper
class Main extends Script {
def run() {
println 'Groovy world!' // run()
}
static void main(String[] args) { // main()
InvokerHelper.runScript(Main, args)
}
}
GroovyはIOストリームを使用してファイルを読み書きする公式ドキュメント:Working with IO
IOフロー関連クラス:
1.ファイルを読む
//
def file = new File("filePath");
// , API ,
def aClosure = {
line ->
println line;
};
file.eachLine(aClosure);
/* : API ,public Object eachLine(Closure closure); eachLine closure , 。 eachLine() , 。 。 , 。 Groovy , , 。 */
//
file.eachLine{
line ->
println line;
};
//
file.withInputStream{
is ->
println is.getText(); // API , 。
};
特に、Groovyでは、関数の最後のパラメータが閉パッケージの場合、カッコを省略できます.さもないとgradleで見れば見るほど分からない.2.書類を書く
//
def file = new File("srcfilePath");
def newFile = new File("targetFilePath");
newFile.withOutputStream{ os ->
os << file.getBytes(); //
}
Groovy操作XMLファイル公式ドキュメント:processing xml
GroovyにはXMLファイルを操作する2つのツールクラスがあり、APIを表示し、ダウンロードしたapiファイルには次のようなものがあります.
解析XMLという機能はAndroidで使われるはずです.manifest.xmlファイルを操作するからです.
例では、両方の方法で解析できます.
def text = ''' <some> <technology name="groovyProperty"> <name>GroovyNode</name> </technology> </some> '''
// XmlSlurper
def some = new XmlSlurper().parseText(text); //
assert some instanceof groovy.util.slurpersupport.GPathResult
println some.technology.name;
println some.technology[0].@name;
// XmlParser , text()
def list = new XmlParser().parseText(text)
assert list instanceof groovy.util.Node
println list.technology.name.text() == 'GroovyNode'
締めくくり:Groovy自体は、新しい言語のようにJVMベースの言語です.ここではgradleに関するGroovyの使用のみを学び,紹介した.その後gradleを学び始め、gradleを深く学ぶ過程で戻ってGroovyの理解と使用を深めると信じています.
本文の関連コードはgithub ioLearnにあります.
***
感謝:AndroidのGradleを深く理解する