Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Some unexpected practical for Fewer Braces #18547

djx314 started this conversation in General Discussion
Discussion options

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😂.

You must be logged in to vote

Replies: 0 comments

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
1 participant

AltStyle によって変換されたページ (->オリジナル) /