はじめに declineではオプション引数ごとに詳細を指定してOptsを生成する必要があります。case classのフィールド名をそのままオプション名にするので十分な場合にはOptsを生成するコードは冗長になります。今回はshapelessを使ってcase classの定義からOptsを導出してみます。 やること case classの各フィールドから対応するOptsを導出し、case class自体のOptsへ合成します。以下のコードのようなイメージです。 final case class Config(name: String, favoriteNumber:Int) val name = Opts val favoriteNumber = Opts val configOpts = (name, favoriteNumber).mapN(Config.apply) Optsの導出は

先程、 1.2.1 で以下のように述べました。 ジェネリックプログラミングとは、クラスや型といった具体的な要素から「構造」という要素を取り出し、それ単体で物事をうまく扱おうという考え方を指しています。 では、 構造 とは何でしょう。数学的な難しい話は割愛しますが、 代数的データ型(Algebraic Data Types, ADTs) を用いることで再帰を含む複雑なデータ型を表現できることがわかっています。 そして、多くの言語ではこのADTsを言語レベルである程度サポートするための機能が備えられており、Scalaもこうした言語のうちの一つです(後述する Tuple や sealed trait などがこれをサポートしています)。 ADTsは、 直積(Product) と 直和(Coproduct、 余積とも) から成るデータ型の総称です。数学的な詳細な説明は割愛しますが、直積は複数のデ
1リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く