読者です 読者をやめる 読者になる 読者になる

倭マン's BLOG

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

Scala の Seq に定義されているメソッドを試す (9) ~タプル関連~

Scala の Seq に定義されているメソッドを試すシリーズ(目次)。 今回は Seq のタプルやタプルの Seq を返すメソッドを見ていきます。 Map はタプルの Seq なので groupBy メソッドもここで扱います。今回扱うメソッド def splitAt(n: Int): (Seq[A], Seq[A…

Scala の Seq に定義されているメソッドを試す (8) ~多重コレクション~

Scala の Seq に定義されているメソッドを試すシリーズ(目次)。 今回は Seq の Seq や Seq の Iterator に関連するメソッドを試していきます。 Seq のタプルやタプルの Seq を返すメソッドも試そうと思ったのですが、長くなりそうなのでこれらは次回に。今…

Scala の Seq に定義されているメソッドを試す (7) ~畳み込み~

Scala の Seq に定義されているメソッドを試すシリーズ(目次)。 今回扱うのは、Seq の要素を走査して何かしらの結果を計算する、畳み込みに関するメソッドです。今回扱うメソッド畳み込みに関するメソッドには fold, reduce, scan があり、それぞれに左右…

Scala の Seq に定義されているメソッドを試す (6) ~異なる要素数の Seq を返すメソッド~

Scala の Seq に定義されているメソッドを試すシリーズ(目次)。 今回扱うのは、元の Seq オブジェクトとは要素が異なる(場合がある)Seq オブジェクトを返すメソッドです。 まぁ大体、要素の追加や削除を行うメソッドです。 前回と同様に、Seq のコンパニ…

Scala の Seq に定義されているメソッドを試す (5) ~同じ要素数の Seq を返すメソッド~

Scala の Seq に定義されているメソッドを試すシリーズ(目次)。 今回は既にある Seq オブジェクトから新たに Seq オブジェクトを作るメソッド。 特に生成された Seq オブジェクトの要素数が元の Seq オブジェクトの要素数と一致するものを試していきます。…

Scala の Seq に定義されているメソッドを試す (4) ~インデックス~

Scala の Seq に定義されているメソッドを試すシリーズ(目次)。 今回はインデックスに関連するメソッドを試していきます。今回扱うメソッド今回扱うメソッドは以下の通り。 最初の2つ以外はインデックスの Int 値を返すメソッドです。 似たようなメソッド…

Scala の Seq に定義されているメソッドを試す (3) ~要素の取得~

Scala の Seq に定義されているメソッドを試すシリーズ(目次)。 今回は Seq に格納されている要素を取得するメソッドと、各要素に対して副作用のある処理を行うメソッド(まぁ、foreach メソッドなんですが)を試します。今回扱うメソッドまずは要素を取得…

Scala の Seq に定義されているメソッドを試す (2) ~要素の有無・要素数~

Scala の Seq に定義されているメソッドを試すシリーズ(目次)。 前回はコンパニオン・オブジェクトに定義されているファクトリ・メソッドを試しましたが、今回からは Seq トレイトに定義されているメソッドを見ていきます。 一度に全てを見るのは無理なの…

Scala の Seq に定義されているメソッドを試す (1) ~ファクトリ・メソッド~

Scala の Seq トレイト、コンパニオン・オブジェクトにはたくさんのメソッドが定義されていますが、あまりにもたくさんのメソッドがありすぎて、コードをある程度書いた後で「このメソッド使ったら簡単に実装できるやん!」みたいなことが幾度かあったので、…

Scala で無限個の無限リストをソートされた形で結合する

以前の記事『Scala で無限リストをソートされた形で結合する』の続き。 前の記事では元記事の本題の「無限個の無限リスト」まで行き着かなかったので、この記事で見ていきます。Haskell で書かれた元記事はこちら: itchyny.hatenablog.com 今回扱う問題は5…

Scala で無限リストをソートされた形で結合する

あとで読もうと思って数ヶ月放置してた記事 itchyny.hatenablog.com を消化しようと、途中まで Scala で書いてみた。 まぁ、ホント書き換えただけの記事。 しかも、本論の「無限個の無限リスト」まではまだ行けず、その手前の3個の無限リストまで。ところで…

Gson で Scala のコレクションを使う

前回、Google が開発している Java 用の JSON ライブラリを Scala で使う方法を見ました。 ただし、Scala のコレクションを Gson で使えるようにする仕方がよく分からなかったので、結局配列や Java のコレクションを使っていました。 あの後、あれこれ試し…

Scala で Gson を使ってみる

ちょっと設定を記述するプロパティファイル的なものを使いたかったんだけど、Java のプロパティファイル使うのも XML 地獄に突入するのも嫌だったので、JSON を使って見ることに。 Java/Scala でどんなライブラリがよく使われているのか全然知らないんだけど…

Scala の暗黙の型変換ちょっこっとメモ

Scala の暗黙の型変換を使っててちょっと意外だった挙動をメモ。 暗黙の型変換に関するドキュメントとか全く呼んでないので当たり前の話かも知れませんが。次のような HelloWorld なよくあるクラス Greeter, GreeterR があったとします: class Greeter{ def…

Scala で Groovy のビルダーみたいなことをする

ちょっと前に「倭マンのつぶや記」で書いたエントリの焼き直し記事。 2015年11月25日 - 倭マンのつぶや記 Groovy のビルダーは HTML などのツリー構造を作るのに便利なクラスですが、Groovy の言語特性をかなり使ってるので Scala ではできないかなぁ?と思…

ScalaTest も『JUnit 実践入門』もまとめて相手してやんよ (9) :カスタム Matcher の作成2 ~Matcher 実装編~

今回は Matcher 型もしくはそれに類する型の実装クラスを作成して、検証文(should を含む文)の独自の述語を作る方法を見ていきます(目次)。 『JUnit 実践入門』に沿うなら前回の型クラスの話よりこちらを先にやるべきだった気もしますが、書いてしまった…

ScalaTest も『JUnit 実践入門』もまとめて相手してやんよ (8) : カスタム Matcher の作成1 ~型クラス実装編~

前回までで ScalaTest に定義済みの Matcher を見てきましたが、今回と次回で独自の検証を行う方法を見ていきます(目次)。 検証方法の拡張には大まかに分けて2つあり、1つは JUnit のように(ScalaTest の)Matcher トレイトもしくはそれに類するトレイト…

ScalaTest も『JUnit 実践入門』もまとめて相手してやんよ (7) : Matcher いろいろ~論理演算・その他編~

さて、今回で ScalaTest の基本的な Matcher は完結(目次)。 扱うのは他の Matcher を組み合わせる論理演算と、ちょっとメタプログラミングっぽい(※個人の感想です) Matcher たち。記事の内容 論理演算 JavaBeans パターンマッチング コード断片 参考 Sc…

ScalaTest も『JUnit 実践入門』もまとめて相手してやんよ (6) : Matcher いろいろ~コレクション編~

前回に続き、今回も ScalaTest に定義済みの Matcher を見ていきます(目次)。 今回扱うのはコレクション関連の Matcher です。Scala のコレクションは Java のコレクションとは別の型ですが、ScalaTest のコレクション関連の Matcher はどちらも同じように…

ScalaTest も『JUnit 実践入門』もまとめて相手してやんよ (5) : Matcher いろいろ~各種クラス編~

今回から何回かにわたって ScalaTest の Matcher による検証方法を見ていきます(目次)。 JUnit の assertThat に対応するものですが、Scala の括弧省略や暗黙の型変換によって通常の英文のように書くことができます。 日本人にとってはそんなにありがたく…

implicit な「<:<」や「=:=」とはなんぞや? (Scala)

次のような汎用的な(何に使うか分からない)コンテナクラス Container があるとしましょう: class Container[E](es:E*){ def apply(i:Int):E = es(i) } 今の段階では要素を取得することができるだけです: val stringC = new Container("abc", "def", "ghi…

ScalaTest も『JUnit 実践入門』もまとめて相手してやんよ (4) : アノテーションとテストのスキップ

今回は JUnit と ScalaTest で提供されているアノテーションを見ていきます(目次)。 加えて ScalaTest でテストをスキップする方法も見ていきます。この記事の内容 JUnit のアノテーション ScalaTest のアノテーション ScalaTest の Ignore 参考 『JUnit …

ScalaTest も『JUnit 実践入門』もまとめて相手してやんよ (3) : 可読性の高いテストコードの書き方

今回はテストコードを書く上で念頭に置いておきたい概念、ステップなど(目次)。 詳しくは『JUnit 実践入門』本文参照。 ここではコードを中心に機械的な話だけ。この記事の内容 テスト対象 SUT 4フェーズテストと GivenWhenThen トレイト 参考 『JUnit 実…

ScalaTest も『JUnit 実践入門』もまとめて相手してやんよ (2) : ScalaTest 特化機能1

今回はちょっと『JUnit 実践入門』から外れて、ScalaTest (もしくは Scala)特有の機能について見ていきます(目次)。 ScalaTest User Guide で飛ばした話の回収です。この記事の内容 DiagrammedAssertions コード断片のコンパイル TripleEquals 「===」 …

ScalaTest も『JUnit 実践入門』もまとめて相手してやんよ (1) : テストコードの記述

今回は「テストコードの記述」を見ていきます(目次)。この記事の内容 テストクラス テストケース 基本的なアサーション 参考 『JUnit 実践入門』 1.4 ScalaTest User Guide 『Selecting testing styles 』 『Defining base classes for your project』 『W…

ScalaTest も『JUnit 実践入門』もまとめて相手してやんよ (0) : ことはじめ

Scala コード書いててそろそろキチンとテストもしないといけないなぁと思い ScalaTest のユーザーガイドを読んでたんだけど、簡単なお試しコード書かないとよく分からんなぁということで、積ん読状態になってた(というより、いつの間にか本棚にキチンと直し…

sbt × Eclipse スタートアップ

前回、IntelliJ IDEA で sbt プロジェクトを扱う方法を見ましたが、今回はそれの Eclipse 版。 ただし、Eclipse は Scala プラグインである Scala IDE for Eclipse をインストールしても(今のところ) sbt プロジェクトをそのままインポートすることができ…

sbt × IntelliJ IDEA (× git) スタートアップ

なんか今更ですが、IntelliJ IDEA で sbt プロジェクトを扱う方法を見ていきます。 まぁ、JetBrain さんが提供する Scala プラグインをインストールすれば万事 OK なんですが、プラグインのインストールとかたまにしかやらないので忘れた時用のメモとして書…

「Apparent refinement of result type; are you missing an '=' sign?」って? / Scala

Scala 書いてて IntelliJ IDEA さんに警告受けたんだけど、いまいちどう修正したらいいのかわからないのでメモ。 抽象型に関係するお話。まず、次のような Box トレイトを作る: trait Box{ type E def element:E } これを実装した、Int を箱に入れる IntBox…

円周率の任意精度の値 Scala × spire

円周率の日は過ぎてしまいましたが、円周率関連のお話。Scala で(実質的には Java で)円周率の値を倍精度で得る方法を実行している画面:@waman10da @pronama ( ・∀・)つ〃∩ ヘェーヘェーヘェー~ pic.twitter.com/nDWRDGMgYc— kijuky (@kijuky) 2015, 3月 14 円周…

Scala のマクロで簡単なリフレクティブなアクセッサを書いてみる。

ちょっと Scala のマクロの練習に、任意オブジェクトに対して文字列で指定した名前のプロパティ(Scala でもプロパティっていうんだっけ?)にアクセスするコードを書いてみました。 プロパティ値を取得するものすごく簡単なものだけど。 使い方は以下のよう…

2014年11月10日

日記Scala のマクロ使って commons-beanutils の BeanUtils#getProperty() みたいなリフレクション・メソッドを書いてみた。 AST の具体的な構成がまだよく分かってないので試行錯誤だけど、案外簡単に書けそう。 ブログ記事書こ。ジェネリック・メソッドも…

2014年11月5日

日記月マガ発売。 圓明遺伝子を探せ! ノラガミとパンプキン・シザーズ、先月号(よりも前から?)を読み忘れてるようで、話が分からん。Scala のマクロが sbt プロジェクトで動くようになったので準クォートをイジり出してるんだけど、どうも AST の扱いが…

2014年11月3日

日記関西ではまだ月マガ発売されてないのね。さて、そろそろ Scala の準クォート (quasiquote) を勉強しよう。 やっぱどんなコードがどんな抽象構文木になるかはある程度知っとかないといけないよな。 Groovy では Groovy Console で確認できた気がするけど…

sbt でも Scala 2.11 でマクロしたい!

sbt プロジェクトで Scala 2.11 のマクロを試そうと思って設定してたんだけど、マクロの仕様上、単純な sbt プロジェクトではうまくいかなかったので必要な設定をメモ。sbt -0.13.0 までのドキュメントには「Macro Projects」という項目があったのですが htt…

2014年10月29日

日記sbt-0.13.0 ではドキュメントに「Macro Projects」という項目があって、マクロ部分を切り出してマルチプロジェクトにしないといけないという話が書いてあったんだが、最新の sbt-0.13.5 のドキュメントではそういう項目がなくなってたのでマルチプロジェ…

2014年10月28日

日記Scala のマクロを使おうとあれこれ試してたんだけど全然動かなくてどうしたものかと悩んでたんだけど、どうも sbt では設定無しにマクロが使えないようで。 Macro Projects — sbt Documentation 原因はマクロの実装はそれ以外のソースよりも前にコンパイ…

2014年10月27日

日記商店街の中のコンビニかパン屋に納品するためだろうけど、アーケードの中を山崎パンを配達するトラックが走っててなんだか笑ってしまった。 ズンズンズーンwGroovy のテスティング・フレームワークの Spock のドキュメント読みが途中のまま、今度は Scal…

2014年10月23日

日記Scala のリフレクション自体や Scala から Java のリフレクションを使おうとあれこれやってたんだけど、Type オブジェクトや Class オブジェクトの取得がどうもうまくいかない。 取得する型オブジェクトが型パラメータや抽象型(パス依存型)だからだろ…

2014年10月7日

日記さて、新アニメも始まりだして、とりあえずどんな内容なのかを観るためにあれこれチェックしないといけない日々が続く。 まぁ、観て欲しいのは作成者側でも同じだろうから、1話の初っぱな、もしくは最後にガツーン!とインパクトのある展開があるのが多…

2014年10月6日

日記最近日記以外の全然ブログ書いてないなぁ。 近頃 Scala をちょっとイジってるんで、それで分かったことを、たとえ当たり前そうなことでも、ドキュメントに書いてあるようなことでも、自分なりに(知ったかぶりした感じで)書いてみようと思いつつ、手が…

2014年10月5日

日記Scala のライブラリ spire の使い方が思いの外分からん。 いやまぁ、Scala の使い方がいまいち分かってないのが大きな原因なのだが。 こういう風に使うと思ってたが違うのか?みたいなのばかりでこまる。 あと、IDE (IntelliJ IDEA)と SBT でのコンパ…

Scala Build Tool じゃないのかよ SBT

いや、知ってましたよ、「SBT」が Simple Build Tool の略だって。 とは言いつつ、sbt のサイトには何かの略だとは書いてないっぽいね。 まぁいいや。最近ちょいと Scala をイジってみようと思い勃ったんですが、大したプロジェクトを作るわけでもないのにビ…