| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

差分

ナビゲーションに移動 検索に移動
215 バイト追加 、 2020年2月15日 (土) 08:03
編集の要約なし
==Groovy==
[[Gradle]]
{{amazon|4774147273}}
*groovyコマンドで実行できる
====実行する====
>>groovy scriptname.groovy
====バインディング変数====
*型もdefも使用しない
}
> > groovy .\Person.groovy
i am yagi, 45 years old.
i am foo, 1 years old.
println "${bean.name},${bean.address},${bean.age},${bean.profAge}"
> > groovy .\GroovyBeans.groovy
yagi,AICH,45,40
===プロパティ、フィールド、メソッド参照===
println '6.' + s.getProperty(propName)
> > groovy .\PropertyMethod.groovy
1.Sample
2.Sample
println '2.' + bean."${methodName}"()
> > groovy .\PropertyMethod.groovy
1.method
2.method
*obj.metaClass.methods
groovy:000> > f = new File(/c:\work/) ===> > c:\work groovy:000> > f.properties ===> > [directory:true, canonicalFile:C:\work, file:false, freeSpace:80082784256, invalid:false, canonicalPath:C:\work, usableSpace
:80082784256, hidden:false, totalSpace:217750581248, path:c:\work, name:work, prefixLength:3, absolute:true, class:class java.io.
File, parentFile:c:\, absolutePath:c:\work, parent:c:\, absoluteFile:c:\work]
groovy:000> > f.metaClass.methods ===> > [public boolean java.lang.Object.equals(java.lang.Object), public final native java.lang.Class java.lang.Object.getClass(),
public native int java.lang.Object.hashCode(), public final native void java.lang.Object.notify(), public final native void java.
lang.Object.notifyAll(), public java.lang.String java.lang.Object.toString(), public final void java.lang.Object.wait() throws ja
:
*obj.metaClass.methods.name.sort().unique()
groovy:000> > f.metaClass.methods.name.sort().unique() ===> > [canExecute, canRead, canWrite, compareTo, createNewFile, createTempFile, delete, deleteOnExit, equals, exists, getAbsoluteF
ile, getAbsolutePath, getCanonicalFile, getCanonicalPath, getClass, getFreeSpace, getName, getParent, getParentFile, getPath, get
TotalSpace, getUsableSpace, hashCode, isAbsolute, isDirectory, isFile, isHidden, lastModified, length, list, listFiles, listRoots
println i.class.name
> > groovy .\DataType.groovy
java.lang.Integer
====真偽値の扱い====
|-
|文字列
|長さ>>0
|長さ0
|-
println map
> > groovy .\DataType.groovy
[1:one, 2:two]
====数値型の扱い====
println c.class.name
> > groovy .\DataType.groovy
java.lang.Integer
java.math.BigDecimal
> > groovy .\Strings.groovy
1.123,246
2.$num,${num*2}
c();
> > groovy .\ClosureSample.groovy
hello,Sat Mar 04 18:21:42 JST 2017
====->>を使って引数を与えることができる====
*仮引数を指定しないと、引数を取らないクロージャとなる
c = {
msg ->>
def d = new Date()
println "$msg,$d"
c('hello');
> > groovy .\ClosureSample.groovy
hello,Sat Mar 04 22:32:58 JST 2017
====制御構造として利用====
}
> > groovy .\ClosureSample.groovy
1,2,3,4,5,6,7,8,9,10,
====リソース開放やクローズ====
*http://docs.groovy-lang.org/latest/html/documentation/working-with-io.html
new File(/C:\Users\piroto\workspace\vscode\groovy_lesson\ClosureSample.groovy/).withReader {
reader -> >
reader.each{
println it
}
> > groovy .\ClosureSample.groovy
new File(/C:\Users\piroto\workspace\vscode\groovy_lesson\ClosureSample.groovy/).withReader {
reader ->>
reader.each{
println it
println even
> > groovy .\ClosureSample.groovy
[2, 4, 6, 8, 10]
=====collect=====
println square
> > groovy .\ClosureSample.groovy
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
===コレクション型===
====範囲====
println (1..5)
println (1 ..< &lt; 5)
 > &gt; groovy .\CollectionSample.groovy
[1, 2, 3, 4, 5]
[1, 2, 3, 4]
println list * 2
println list
println list << &lt;&lt; [9,10]
println list
> &gt; groovy .\CollectionSample.groovy
1
5
println map."$key"
> &gt; groovy .\CollectionSample.groovy
[1:a, 2:b, 3:c]
a
|フィールド/属性値を推定
|-
|<&lt;=>&gt;
|大小比較
|-
|範囲の生成(閉区間)
|-
|..<&lt;
|範囲の生成(半開区間)
|-
println cc.class.name
> &gt; groovy .\OperatorSample.groovy
=== ?. ===
null
*javaでの==は、Object#is()を利用
====マルチ代入====
groovy:000> &gt; l = [1,2,3] ===> &gt; [1, 2, 3] groovy:000>&gt; groovy:000> &gt; (a,b,c) = l ===> &gt; [1, 2, 3] groovy:000> &gt; a ===> &gt; 1 groovy:000> &gt; b ===> &gt; 2 groovy:000> &gt; c ===> &gt; 3
===制御構造===
====switch-case文====
====for文====
*通常のforおよび拡張forが利用できる
for (i=0; i<&lt;10; i++) {} for (int i: 0 ..<&lt;10) {}
* in の利用が可能
for (i in 0..10){}
println (( 'pppiroto@gmail.com' =~ /[a-z]+/ )?"found":"not found")
> &gt; groovy .\RegexSample.groovy
true
false
====後方参照、補足グループ====
( 'pppiroto@gmail.com' =~ /([a-z])+@([a-z]+\.[a-z])+/ ).each{
g0, g1, g2 ->&gt;
println "id=$g1,host=$g2,addr=$g0"
}
}
> &gt; groovy .\RegexSample.groovy
id=o,host=gmail.c,addr=pppiroto@gmail.c
pppiroto
println sw
> &gt; groovy .\XmlBuilderSample.groovy <&lt;Book>&gt; <&lt;Book type='book'>&gt; <&lt;Author>&gt;Hoge<&lt;/Author>&gt; <&lt;Price>&gt;1000<&lt;/Price>&gt; <&lt;/Book>&gt; <&lt;/Book>&gt;
==Groovy JDK (GDK)==

案内メニュー