-
Couldn't load subscription status.
- Fork 1.1k
Some unexpected practical for Fewer Braces
#18547
djx314
started this conversation in
General Discussion
-
Usage of match case in Scala 3, and it seems that can replace some
list.lambda { item =>
// mutiply lines
}by
list.lambda(_.match case item => // mutiply lines )
Just move { } to ( ).
https://scastie.scala-lang.org/djx314/U4rUBM21TQqC5LGdRV2yJA/29
sealed trait ModelWrap case class StringWrap(str: String) extends ModelWrap: override val toString: String = "wrap-" + str end StringWrap case class IntWrap(model: Int) extends ModelWrap: override val toString: String = "wrap-" + model.toString end IntWrap case class LongWrap(model: Long) extends ModelWrap: override val toString: String = "wrap-" + model.toString end LongWrap
// Defined method 1 def gen0(gen: => List[ModelWrap]): List[ModelWrap] = gen def gen1(gen: String => List[ModelWrap])(str: String): List[ModelWrap] = gen( str ) def gen2( gen: (String, Long) => List[ModelWrap] )(str: String, long: Long): List[ModelWrap] = gen(str, long) def gen3( gen: (String, Long, Int) => List[ModelWrap] )(str: String, long: Long, int: Int): List[ModelWrap] = gen(str, long, int) def gen4( gen: (String, Long, Int, String) => List[ModelWrap] )(str: String, long: Long, int: Int, str2: String): List[ModelWrap] = gen(str, long, int, str2) def `yet-another-gen4`( gen: ((String, Long, Int, String)) => List[ModelWrap] )(str: String, long: Long, int: Int, str2: String): List[ModelWrap] = gen(str, long, int, str2)
// Usage: sample 1 val l0: List[ModelWrap] = gen0(().match case _ => val item1 = IntWrap(2345) val item2 = StringWrap("Starting Test.") List(item1, item2) ) val l1: List[ModelWrap] = gen1((_).match case parameter1 => val item1 = StringWrap(parameter1) List(item1) )("Have a test 1.") val l2: List[ModelWrap] = gen2((_, _).match case (parameter1, parameter2) => val item1 = StringWrap(parameter1) val item2 = LongWrap(parameter2) List(item1, item2) )("Have a test 1.", 234) val l3: List[ModelWrap] = gen3((_, _, _).match case (parameter1, parameter2, parameter3) => val item1 = StringWrap(parameter1) val item2 = LongWrap(parameter2) val item3 = IntWrap(parameter3) List(item1, item2, item3) )("Have a test 1.", 234, 556) val l4: List[ModelWrap] = gen4((_, _, _, _).match case (parameter1, parameter2, parameter3, parameter4) => val item1 = StringWrap(parameter1) val item2 = LongWrap(parameter2) val item3 = IntWrap(parameter3) val item4 = StringWrap(parameter4) List(item1, item2, item3, item4) )("Have a test 1.", 234, 556, "End Testing.")
// Usage: sample 2 val `yet-another-l1`: List[ModelWrap] = gen1(_.match case parameter1 => val item1 = StringWrap(parameter1) List(item1) )("Another test 1.") val `yet-another-l4`: List[ModelWrap] = `yet-another-gen4`(_.match case (parameter1, parameter2, parameter3, parameter4) => val item1 = StringWrap(parameter1) val item2 = LongWrap(parameter2) val item3 = IntWrap(parameter3) val item4 = StringWrap(parameter4) List(item1, item2, item3, item4) )("Have a test 1.", 234, 556, "End Testing.")
locally(().match case _ => println(l0) println(l1) println(l2) println(l3) println(l4) println(`yet-another-l1`) println(`yet-another-l4`) )
Output
List(wrap-2345, wrap-Starting Test.) List(wrap-Have a test 1.) List(wrap-Have a test 1., wrap-234) List(wrap-Have a test 1., wrap-234, wrap-556) List(wrap-Have a test 1., wrap-234, wrap-556, wrap-End Testing.) List(wrap-Another test 1.) List(wrap-Have a test 1., wrap-234, wrap-556, wrap-End Testing.)
The code is discovered in a joyful daily conversation😂.
Beta Was this translation helpful? Give feedback.
All reactions
-
😄 1
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment