倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

Groovy

Groovy でグループを使った正規表現マッチを試す

なんとなく今まで正規表現を回避してたんだけど、定型文字列を String のメソッドだけで解析するの面倒すぎるので、Groovy パワーであれこれ試してみました。 Groovy 使うと、グループを使った正規表現でマッチしたグループの内容を List の要素アクセスのよ…

Windows 厨でも gvm したい ~Cygwin 編~

別に Windows 厨というほど使い倒してるワケではないんですが、Windows でも GVM (Groovy enVironment Manager →) を使いたいなぁと思って試してみました。 GVM は Groovy 関連のツールを簡単にダウンロード & インストールできるツールです。 Groovy をはじ…

Spock ことはじめ ~without IDE 編~

Java/Groovy のテスティング・フレームワーク Spock の使い方をあれこれ調べてみました。 まぁ、Gradle 使えるならそれに越したことはないですが、なんとなく Maven3 やコマンドラインからの使用方法も試してみました。どうも Maven3 から GMaven が Groovy …

GDK に Java8 で導入された日時 API の拡張が追加されてたので試してみた

Java8 の目玉機能はラムダ式ですが、その次によく取り上げられるのが新しい日時 API である Date and Time API(JSR-310) でしょう。 ただ、この API はナカナカに取っつきにくいという非難の声が。 まぁ、日時の扱い自体が面倒なので仕方がないという擁護の…

List 風の getAt() を更にしつこくやるよ

前回、GDK が List インターフェースに追加している getAt() メソッドの挙動をちょっと詳しく見てみました。 今回は、もしそれを実装するとどんなコードになるかを見ていきます。 実装に興味ない方はスルーよろしく。 あと、実際の GDK のソースコードは参照…

List の getAt() をしつこくやるよ

最近 GDK が List に追加しているメソッドをあれこれ試しているんですが、Java の配列のように要素を取得できる [] 演算子、すなわち getAt() メソッドにいろいろなインデックスを渡したときの挙動がいまいちシックリこないので、もう少しあれこれ試してみま…

GDK のList がこんなに可愛いわけがない。 (List 編3) シーケンス

今回は GDK が List に追加しているメソッドのうち、関数型言語にある型、シーケンスに関するメソッドを見ていきます。 シーケンスは順序づけられたオブジェクトの列といったイメージで、要素列の走査は1度しか行われない気持ちです*1。 Groovy にはシーケン…

GDK が List に追加している getAt() と putAt() に指定できるインデックス範囲についての絞殺

『GDK の List がこんなに可愛いわけがない。』の List 編1、List 編2で、GDK が List インターフェースに追加しているメソッド getAt(), putAt() を見てきました。 そのときに API を見たりサンプルコードを書いたりしていて思ったのですが、インデックスを…

GDK のList がこんなに可愛いわけがない。 (List 編2) 要素の追加・削除

今回は GDK が List インターフェースに追加しているメソッドのうち、要素の追加・削除に関連するメソッド。 前回見た要素の取得に関するメソッド getAt() と対になっている putAt() メソッドなどを見ていきます。 今回見ていくメソッド: boolean addAll(in…

GDK のList がこんなに可愛いわけがない。 (List 編1) 要素の取得

前回までで GDK が Object クラスや Collection クラスに追加しているメソッドを見てきました。 ただ、普段よく使う型はこれらというより今回から見ていく List でしょう。 Object や Collection に追加されていたメソッドのサンプルを書いているときも、基…

GDK のコレクションがこんなに便利なわけがない。 (Collection 編8) 型変換

今回は GDK が Collection インターフェースに追加するクラスのうち、型変換をするものを見ていきます。 今回でやっと Collection 最後かな。 ただ、まだ List をやらんといかんのだが。 型変換は便利だけどあんまり面白くないんでサラッといっちゃいましょ…

GDK のコレクションがこんなに便利なわけがない。 (Collection 編7) 多重コレクション

今回は GDK が Collection インターフェースに追加している多重コレクション(多次元コレクション)に関連するメソッドを見ていきます。 今回扱うのは以下のメソッド: Collection flatten() Collection flatten(Closure flattenUsing) Collection split(Clo…

GDK のコレクションがこんなに便利なわけがない。 (Collection 編6) Reduce 処理

今回は GDK が Collection インターフェースに追加しているメソッドの内、Reduce 処理を行うものを見ていきます。 Reduce 処理とは各要素もしくはそれから得た値などをある意味で「足し上げる」メソッドです。 今回扱うメソッドはは以下のもの: Number coun…

GDK のコレクションがこんなに便利なわけがない。 (Collection 編5) その他の集合生成

今回は GDK が Collection クラスに追加している、いろいろなコレクションを生成するメソッドを見ていきます。 「コレクションを生成する」と言っても、(static) ファクトリ・メソッドを集めて見ていくというわけではなく、メソッドの返り値がコレクションな…

GDK のコレクションがこんなに便利なわけがない。 (Collection 編4) 要素の蒐集 collect

今回は GDK が Collection クラスに追加しているメソッドの内、要素の蒐集を行うメソッドを見ていきます。 メソッド名は「collect」で始まるもの。 要素の蒐集とは、引数としてとったクロージャを各要素に適用し、その結果返される要素を集めて新たなコレク…

GDK のコレクションがこんなに便利なわけがない。 (Collection 編3) 要素の検索 find

今回は GDK が Collection クラスに追加しているメソッドの内、要素を検索するメソッドを見ていきます。 メソッド名でいうと「find」で始まるメソッドです。 これらは GDK が Object クラスに追加しているメソッドを見ていたシリーズ「あんたに GDK の何が分…

GDK のコレクションがこんなに便利なわけがない。 (Collection 編2) 要素の追加・削除

今回は GDK が Collection クラスに追加している要素の追加・削除に関連するメソッド。 要素の追加・削除は Java の標準 API にもあれこれありますが、GDK が追加しているのは Groovy の演算子に対応するもの(plus(), leftShift())、可変長引数(配列 Obje…

GDK のコレクションがこんなに便利なわけがない。 (Collection 編1) 集合演算、文字列関連

さて、今回から GDK が Collection に追加しているメソッドを見ていきます。 Object クラスに追加されているメソッドも、オーバライドされているものはまた扱います。目次 集合演算 文字列関連 要素の追加・削除 要素の検索 findXxxx() 要素の蒐集 collectXx…

Groovy ノミックス (Class 編)

今回は Collection に突入しようかと思ってたんですが、前回のメタクラスの流れにのって、GDK が Class クラスに追加しているメソッドを見ていきます。 今回見ていくメソッドは以下の通り: boolean isCase(Object switchValue) // インスタンス生成 Object …

あんたに GDK の何が分かるっていうの!? (Object 編6) メタプログラミング用メソッド

今回は GDK が Object クラスに追加しているメタプログラミング用のメソッド。 Groovy ではメタオブジェクト・プロトコルという方式を使ってオブジェクトの挙動を動的に変更できるので、メタプログラミングを行いたい場合はメタクラスの設定をあれこれ行うこ…

あんたに GDK の何が分かるっていうの!? (Object 編5) デバッグ用メソッド

今回は GDK が Object クラスに追加しているデバッグ用のメソッドを見ていきます。 主に print(), println() のような標準出力へメッセージを書き出すメソッドや、オブジェクトの情報を文字列に変換する toString(), dump(), inspect() などを扱います。 具…

あんたに GDK の何が分かるっていうの!? (Object 編4) コンテナ・メソッド 後編

前回に引き続き、今回も GDK が Object クラスに追加しているコンテナ・メソッドを見てきます。 今回見ていくのは find で始まる名前のメソッド。 結構あれこれあるんですね。 今回見ていくメソッドは以下のもの: Collection findAll(Closure closure) Coll…

あんたに GDK の何が分かるっていうの!? (Object 編3) コンテナ・メソッド 前編

今回は GDK が Object クラスに追加しているコンテナ・メソッド。 ちょっと多かったので前後編に分けます(後編は findXxxx() メソッド)。 コンテナ・メソッドとはコレクションや配列のような、要素を保持する入れ物を指して使っています。 今回扱うメソッ…

あんたに GDK の何が分かるっていうの!? (Object 編2) プロパティ、リフレクション

今回は GDK が Object クラスに追加しているプロパティ、リフレクション関連のメソッド。 (正式な仕様はともかく)Groovy でのプロパティとは getter/setter メソッド*1で値の取得・設定ができるメンバという感じでしょうか。 Groovy ではフィールドを定義…

あんたに GDK の何が分かるっていうの!? (Object 編1)

最近 Java 8 の Stream による Map/Reduce 処理の API をあれこれイジってて、GDK の同様のメソッド群と比べてみようと思い GDK の API 見てたんですが、each() とか collect() とかが Object クラスに定義されてて List や Collection の前に Object クラス…

Groovy JDK? It's GDK! (File 編7) traverse() 再訪

今回は、以前の記事で簡単に見た traverse() メソッドをもう少しきちんと見て行きます(目次)。参考 URL 「Groovy JDK」 File オーバーロードされた3つの traverse()まずは traverse() メソッドのオーバーロードされているシグニチャを見てみましょう: voi…

Groovy JDK? It's GDK! (File 編6) その他のメソッド

さぁ、今回は GDK が File クラスに追加するメソッドのうち、今まで扱ってなかった残りのメソッドを見ていきます(目次)。 残りのメソッドは以下の通り: メソッド 返り値 since ファイル操作 size()renameTo(String newPathName) longboolean 1.5.01.7.4 …

Groovy JDK? It's GDK! (File 編5) データストリーム・オブジェクトストリーム

今回はデータストリームとオブジェクトストリームに関連するメソッド(目次)。 あんまり詳しくないんで、サラッと流しマース。データストリームまずはデータストリームに関連するメソッド。 データストリームとは、Java のプリミティブ型のストリームって感…

Groovy JDK? It's GDK! (File 編4) ファイル・ディレクトリの走査

今回は GDK が java.io.File クラスに追加している、ファイル・ディレクトリの走査に関するメソッドを見ていきます(目次)。 扱うメソッドは下表の通り: メソッド 返り値 since 非再帰 eachFile(Closure c)eachFile(FileType type, Closure c)eachDir(Clos…

Groovy JDK? It's GDK! (File 編3) 行処理

前回に引き続き、今回も GDK が java.io.File に追加している文字列関連のメソッドを見ていきます(目次)。 readLines() メソッドは各行を String オブジェクトとする、List<String> オブジェクトを返す「一括読み込み」メソッドです。 それ以外のメソッドは、Closu</string>…