scala
-
Environment, Property variable 읽기scala/basic 2023. 2. 3. 15:34
Environment val myEnv: Option[String] = sys.env.get("MY_ENV") println(myEnv) > export MY_ENV="env_123" > java -cp app.jar ... Property val myProp: Option[String] = sys.props.get("MY_PROP") println(myProp) > java -cp app.jar -DMY_PROP="prop_abc" ...
-
Iorscala/cats2 2023. 1. 29. 16:55
문제 Join two lists of different sizes 코드 import cats.data._ import cats.syntax.all._ object IorExample { def main(args: Array[String]): Unit = { val list1: List[String] = List("x", "y") val list2: List[Int] = List(1, 2, 3, 4) val zip = list1.alignWith(list2) { case Ior.Both(a, b) => (a, b) case Ior.Left(a) => (a, 0) case Ior.Right(b) => ("z", b) } println(zip) // List((x,1), (y,2), (z,3), (z,4)) ..
-
scalatest-3.2.3 의 property based testscala/scalatest 2023. 1. 25. 19:54
문제 https://wefree.tistory.com/77 의 property based test 를 scalatest-3.2.3 버전을 이용해 작성해 보자. 코드 build.sbt 에 scalatest, scalacheck 라이브러리를 추가한다. libraryDependencies ++= Seq( "org.scalatest" %% "scalatest" % "3.2.3" % Test, "org.scalatestplus" %% "scalatestplus-scalacheck" % "3.1.0.0-RC2" % Test ) 테스트를 작성한다. import org.scalacheck.Gen import org.scalatest.BeforeAndAfter import org.scalatest.funsuite.Any..
-
Cats2 Exercisescala/cats2 2023. 1. 22. 20:35
https://www.geekabyte.io/2018/09/easing-into-cats-and-case-for-category.html 에 나오는 문제의 답안이 scalafiddle 사이트로 연결되지 않아 볼 수가 없다. cats 로 내가 생각한 대로 구현해 본다. import cats._ import cats.data._ import cats.syntax.all._ import scala.concurrent.ExecutionContext.Implicits.global import scala.concurrent.duration.Duration import scala.concurrent.{Await, ExecutionContext, Future} import scala.util.{Failure, Succ..
-
Validatedscala/cats2 2023. 1. 19. 21:36
Validated 예제 import cats.data._ import cats.syntax.all._ object ValidatedTest { def main(args: Array[String]): Unit = { val x: ValidatedNel[String, Int] = 1.validNel[String] // 1.valid[NonEmptyList[String]] val y: ValidatedNel[String, Int] = 2.validNel[String] // 2.valid[NonEmptyList[String]] val e1: ValidatedNel[String, Int] = "error1".invalidNel[Int] // NonEmptyList.of("error1").invalid[Int] v..
-
Writerscala/cats2 2023. 1. 19. 20:52
Writer Monad 예제 import cats.data._ import cats.syntax.all._ object WriterTest { def main(args: Array[String]): Unit = { val x: Writer[List[String], Int] = 1.writer(List("one")) val y: Writer[List[String], Int] = 23.writer(List("two", "three")) val z: Writer[List[String], Int] = for { a
-
Future[Try[A]] <=> Future[A] 상호간 변환하기scala/basic 2023. 1. 16. 12:58
Future[Try[A]] Future[A] 변환 Future[Try[A]] => Future[A]import scala.concurrent.ExecutionContext.Implicits.globalimport scala.concurrent.Futureimport scala.util.{Success, Try}object FutureTryTest { def main(args: Array[String]): Unit = { val futureTry: Future[Try[Int]] = Future(Success(1)) // https://github.com/monix/monix/blob/series/3.x/monix-execution/shared/src/main/scala/monix/e..
-
Error Modeling (with Exception)scala/basic 2023. 1. 16. 10:55
import play.api.libs.json.{Json, OFormat} sealed class HttpError(val status: Int, val message: String) extends Throwable(message) object HttpError { implicit val jsonFormat: OFormat[HttpError] = Json.format[HttpError] def apply(status: Int, message: String): HttpError = new HttpError(status, message) def unapply(err: Throwable): Option[(Int, String)] = err match { case err: HttpError => Option((..