Skip to content

Instantly share code, notes, and snippets.

@aoiroaoino
Created March 16, 2017 10:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aoiroaoino/b24930e794f20162393ce896b90d109f to your computer and use it in GitHub Desktop.
Save aoiroaoino/b24930e794f20162393ce896b90d109f to your computer and use it in GitHub Desktop.
import monocle.Lens
case class Foo(bar: Option[String])
val _bar = Lens[Foo, Option[String]](_.bar)(s => foo => foo.copy(bar = s))
def いい感じにする(foo: Foo)(s: String): Foo = _bar.modify(bar => bar orElse Some(s))(foo)
// scala> いい感じにする(Foo(Some("bbb")))("aaa")
// res0: Foo = Foo(Some(bbb))
// scala> いい感じにする(Foo(None))("aaa")
// res1: Foo = Foo(Some(aaa))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment