倭マン's BLOG

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

Scala

spire を使ってみるシリーズ 目次

申し訳ございませんが、倭算数理研究所の方へ移動しました m(_ _)mwasan.hatenablog.com Scalaスケーラブルプログラミング第3版作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘出版社/メーカー: インプレス発売日: 2016/09/20メ…

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…