Scala

【Scala】Scala ~ asInstanceOf / isInstanceOf ~

■ はじめに 今更だが、Scala の asInstanceOf / isInstanceOf を扱う。 目次 【1】asInstanceOf 【2】isInstanceOf 【3】サンプル 例1:implicit Class の メソッド 【1】asInstanceOf * Scala の キャスト 【2】isInstanceOf * Scala の データ型判定…

【Scala】Scala ~ implicit ~

■ はじめに https://dk521123.hatenablog.com/entry/2024/07/23/193246 で、sealed trait をやったが、 それを拡張するためのメソッドを追加したく、 イメージとしては、C#の拡張メソッドをScalaでやりたい。 Scala の implicit がやりたいことができそうな…

【Scala】Scala ~ 代数的データ型 / ADT ~

■ はじめに Scala で 色々なデータ型をサポートしたMapを作りたいと思い 調べていたら、以下が見つかったので、まとめておく。 https://stackoverflow.com/questions/43495047/scala-variable-with-multiple-types 目次 【1】用語整理 1)代数的データ型 (…

【Scala】Scala ~ Joda-Time ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/08/000000 の続き。 今回は、Scala で、Joda-Time を使うことを扱う。 目次 【1】Joda-Time 1)使用上の注意 【2】インストール 【3】基本動作 1)Datetime⇒文字列 2)文字列⇒Datetime 【4…

【Scala】Scala ~ mutable collection ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/13/000345 https://dk521123.hatenablog.com/entry/2023/09/07/223422 の続き。 前回は、immutable のコレクションを扱ったが 今回は、mutable のコレクションを取り上げる。 きっかけとしては、 …

【Scala】ScalaTest ~ ScalaMock ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/31/002830 で、Java由来の Mockito を触ったが 今回は、ScalaTest + ScalaMock を触ってみる。 目次 【1】ScalaMock 【2】インストール 【3】使用上の注意 1)final / private メソッド・クラ…

【Scala】ScalaTest ~ あれこれ編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/27/001306 https://dk521123.hatenablog.com/entry/2023/03/28/003906 の続き。 今回は、Scalaの単体試験する際に ScalaTest を使用した時のTipsについてまとめる 目次 【1】初期処理・後処理 1…

【Scala】specs2 ~ 基本編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2024/06/08/122708 の続き。 Scala の specs2 について、少しづつ書き溜めていく 目次 【1】単体テストスタイル 【2】受入テストスタイル 1)ポイント 2)isメソッド 【1】単体テストスタイル * org.…

【Scala】specs2 ~ 入門編 ~

■ はじめに https://dk521123.hatenablog.com/entry/2024/06/07/183708 で、紹介した Scala の テスティングフレームワーク「2)specs2」について もう少し深彫ってみる 目次 【1】specs2 1)その他特徴 2)補足:BDD(Behavior-Driven Development; 振舞…

【Scala】Scala ~ テスティングフレームワーク ~

■ はじめに Scala の 単体試験をする可能性が出てきたので テスティングフレームワーク について、 徐々に書き溜めていく 目次 【1】Scala の テスティングフレームワーク 1)ScalaTest 2)specs2 3)ScalaCheck 4)TestNG 5)Setak / Setac 【2】Sca…

【Scala】Scala ~ Resources ~

■ はじめに 業務で、Scala の Resources を動的に切り替える必要があるので Scala の Resources について、色々調べたことをまとめる 目次 【1】Scala の Resources ディレクトリ 1)デフォルトのResources パス 【2】Resources 関連のAPI 【3】Resource…

【Scala】SBT ~ リポジトリ先を変更・追加するには ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/12/26/012343 https://dk521123.hatenablog.com/entry/2024/01/11/233802 で、AWS CodeArtifact を使って、クローズされた Mavenのリポジトリ (と pip(PyPI; The Python Package Index))を考えている…

【Scala】SBT ~ Proxy環境下でSBTを使用する ~

■ はじめに Proxy接続環境下で、SBTを使えないので 徐々にメモる。 目次 【0】Proxy環境下で sbt コマンド実行した場合 【1】その1:環境変数を利用する 【2】その2:実行時に指定する 【0】Proxy環境下で sbt コマンド実行した場合 * 以下の関連記事…

【Scala】Scala ~ break / continue ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/01/24/000000 で述べた通り、Scala には、 break / continue が基本使用しない。 そこでどうするかを纏める 目次 【1】break / continue の代替案 1)break の代替案 2)continue の代替案 【2】…

【Scala】SBT ~ JAR作成/実行 ~

■ はじめに ScalaのモジュールをJARファイル化して JAVAしか入っていない環境で実行するってことをやっていて 意外と手間取ったので、メモ。 目次 【1】前提条件 1)sbt 含む Scala 環境 2)sbtプラグイン「sbt-assembly」 【2】JAR作成 1)作成コマン…

【Scala】Scala ~ 乱数 / ランダム ~

■ はじめに 今回は、Scala で乱数やランダム文字列についてまとめてみる 目次 【1】UUID 例1:java.util.UUID 【2】乱数 例1:scala.util.Random 【1】UUID 例1:java.util.UUID * JavaのUUIDを使う => 結局、これが一番めんどくない => 以下の関連記…

【Scala】Scala ~ 基本編 / 関数 ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/03/000000 で、Scala の メソッド について扱ったが 今回は、Scala の 関数 について扱う。 目次 【1】関数 (Function) 【2】用語整理 1)無名関数 / 匿名関数 / 関数リテラル (Function liter…

【Scala】Scala ~ TOML ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/16/012034 https://dk521123.hatenablog.com/entry/2023/04/04/000733 の続き。 今回は、Scala で TOMLファイルの扱いについてまとめる TOML https://dk521123.hatenablog.com/entry/2023/04/25/1…

【Scala】Scala ~ 基本編 / トレイト ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/14/000857 で、Scala の クラスについて扱ったが 今回は、トレイト - Trait について学ぶ cf trait = (人・ものの)特性、特色、特徴 目次 【1】トレイト - Trait 1)Java との違い 2)用語整理…

【Scala】Scala ~ 部分関数 / PartialFunction ~

■ はじめに Scala の 部分関数 (PartialFunction) について、学んでいく 目次 【1】部分関数 / PartialFunction 1)サンプル 【2】部分関数の合体 - orElseメソッド 1)サンプル 2)使用上の注意 【1】部分関数 / PartialFunction * 特定の引数のみ処…

【Scala】Scala ~ コレクションで使えるメソッド ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/13/000345 の続き。 Scala を勉強してて、コレクションの操作がちゃんと分かっていないと 話にならなそうなので、基本事項をまとめる 目次 【00】コレクション変換のコツ 【01】foreach / zip…

【Scala】Scala ~ 基本編 / カリー化 ~

■ はじめに Scalaの本をみて、やっと「カリー化」の意味が分かったのでメモ。 (ただ、まだ、実際のメリットがいまいち分からない) 目次 【1】カリー化(currying) 補足 【2】サンプル 例1:Hello world 【3】メリット・デメリット 【1】カリー化(cu…

【Scala】SBT ~ 設定の切替 ~

■ はじめに sbt で 開発用(Local)と本番用(AWS)で切り替えたい場合に 色々と調べていたんだけど、やっとそれっぽい切り替えが可能になったので メモしておく。 なお、参考にしたのは、以下のサイトを組み合わせている https://stackoverflow.com/questio…

【Scala】Scala ~ 環境構築編 / IntelliJ IDEA ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/06/10/034839 で、WSL内に、IntelliJ の環境を作ったが、 Windows Update により環境がぶっ壊れたので VisualBox内の Linux 内に作ることにする (基本、Windows上でも同じ) 目次 【1】注意点 【2…

【Scala】SBT ~ 引数設定の仕方 ~

■ はじめに 小ネタ。 https://dk521123.hatenablog.com/entry/2023/08/01/004207 でやった「sbt run による引数設定の仕方」を分冊。 (見つけづらかったので) 目次 【1】sbt run 1)引数を設定するための構文 2)コマンド例 【2】build.sbt に独自の引…

【Scala】SDKMAN ~ 入門編 ~

■ はじめに 小ネタ。 https://dk521123.hatenablog.com/entry/2023/08/24/002539 でやった「sbt run による引数設定の仕方」を分冊。 目次 【1】SDKMAN 【2】インストール 1)Linux z)トラブルシュート 【3】各種インストール 1)Java 2)sbt 【4】…

【Scala】ScalaTest ~ with Coverage ~

■ はじめに 将来的に必要になるであろう Scalaのカバレッジツール (code coverage)について 未来の自分のために調べてみた 目次 【0】Scalaのカバレッジツール 1)メモ:採用候補 【1】sbt-jacoco 【2】sbt-scoverage 【3】Cobertura 【4】その他のJ…

【Scala】Scala ~ 基本編 / Either型 ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/09/000000 で、Scala の Option型をやったが、 今回は、Either型 について扱う。 目次 【1】Either型 1)Left/Rightの使い分け 【2】サンプル 例1:With getOrElse 例2:With foreach 例3:…

【Scala】Scala ~ Logging / SLF4J ~

■ はじめに Apache Flink でのロギングを調べていたので そこら辺の周辺の知識を纏めておく 目次 【1】SLF4J 補足:Facade (ファサード) 【2】Hello world 1)sbt 2)サンプル 【3】SLF4J + Log4j 2 1)sbt 2)設定ファイル 3)サンプル 4)出力例 …

【Scala】Scala ~ 環境構築編 / IntelliJ IDEA in WSL ~

■ はじめに https://dk521123.hatenablog.com/entry/2023/03/10/193805 で、Windwos で、Scala 開発環境を構築したが Windows/WSL + IntelliJ IDEA + Scala の開発環境を構築しようって 話になったので構築してみる 目次 【1】IntelliJ IDEA 1)IntelliJ I…