From 92fa54136a777cad7f5ce64d918a581b8401c80f Mon Sep 17 00:00:00 2001 From: hellrich Date: Sat, 11 Mar 2017 16:37:18 +0100 Subject: [PATCH 1/4] added printed output as comment --- src/main/scala/stdlib/PatternMatching.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/stdlib/PatternMatching.scala b/src/main/scala/stdlib/PatternMatching.scala index 5dbdeebb..d40d89fc 100644 --- a/src/main/scala/stdlib/PatternMatching.scala +++ b/src/main/scala/stdlib/PatternMatching.scala @@ -17,7 +17,7 @@ object PatternMatching extends FlatSpec with Matchers with org.scalaexercises.de * case 2 => "two" * case _ => "many" * } - * println(matchTest(3)) + * println(matchTest(3)) // prints "many" * } * }}} * From 86f821be51f2b6d322636fcf5ae4ff164dcac3ff Mon Sep 17 00:00:00 2001 From: hellrich Date: Sat, 11 Mar 2017 16:39:43 +0100 Subject: [PATCH 2/4] additional comment, comment formatting --- src/main/scala/stdlib/PatternMatching.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/scala/stdlib/PatternMatching.scala b/src/main/scala/stdlib/PatternMatching.scala index d40d89fc..6509f9a1 100644 --- a/src/main/scala/stdlib/PatternMatching.scala +++ b/src/main/scala/stdlib/PatternMatching.scala @@ -15,7 +15,7 @@ object PatternMatching extends FlatSpec with Matchers with org.scalaexercises.de * def matchTest(x: Int): String = x match { * case 1 => "one" * case 2 => "two" - * case _ => "many" + * case _ => "many" // case _ will trigger if all other cases fail. * } * println(matchTest(3)) // prints "many" * } @@ -38,7 +38,7 @@ object PatternMatching extends FlatSpec with Matchers with org.scalaexercises.de println("BLUE"); 2 case "green" ⇒ println("GREEN"); 3 - case _ ⇒ println(stuff); 0 //case _ will trigger if all other cases fail. + case _ ⇒ println(stuff); 0 // case _ will trigger if all other cases fail. } myStuff should be(res0) From 630466cf994fcd082101fc619fbdaedc8ba0769b Mon Sep 17 00:00:00 2001 From: hellrich Date: Sat, 11 Mar 2017 17:31:21 +0100 Subject: [PATCH 3/4] additional comment --- src/main/scala/stdlib/PatternMatching.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/scala/stdlib/PatternMatching.scala b/src/main/scala/stdlib/PatternMatching.scala index 6509f9a1..08cf2a3a 100644 --- a/src/main/scala/stdlib/PatternMatching.scala +++ b/src/main/scala/stdlib/PatternMatching.scala @@ -178,7 +178,7 @@ object PatternMatching extends FlatSpec with Matchers with org.scalaexercises.de */ def againstListsIIIPatternMatching(res0: Int) { val secondElement = List(1) match { - case x :: y :: xs ⇒ y + case x :: y :: xs ⇒ y // only matches a list with two or more items case _ ⇒ 0 } From ec11b4125a6fe98666be488aaeb2026e20bdaf55 Mon Sep 17 00:00:00 2001 From: hellrich Date: Sat, 11 Mar 2017 17:56:54 +0100 Subject: [PATCH 4/4] added another list example --- src/main/scala/stdlib/PatternMatching.scala | 13 ++++++++++++- src/test/scala/stdlib/PatternMatchingSpec.scala | 10 ++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/main/scala/stdlib/PatternMatching.scala b/src/main/scala/stdlib/PatternMatching.scala index 08cf2a3a..5b7ca27b 100644 --- a/src/main/scala/stdlib/PatternMatching.scala +++ b/src/main/scala/stdlib/PatternMatching.scala @@ -189,11 +189,22 @@ object PatternMatching extends FlatSpec with Matchers with org.scalaexercises.de */ def againstListsIVPatternMatching(res0: Int) { val r = List(1, 2, 3) match { - case x :: y :: Nil ⇒ y + case x :: y :: Nil ⇒ y // only matches a list with exactly two items case _ ⇒ 0 } r should be(res0) } + /** If a pattern is exactly one element longer than a `List`, it extracts the final `Nil`: + */ + def againstListsVPatternMatching(res0: Boolean) { + val r = List(1, 2, 3) match { + case x :: y :: z :: tail ⇒ tail + case _ ⇒ 0 + } + + r == Nil should be(res0) + } + } diff --git a/src/test/scala/stdlib/PatternMatchingSpec.scala b/src/test/scala/stdlib/PatternMatchingSpec.scala index 45f80431..3d880625 100644 --- a/src/test/scala/stdlib/PatternMatchingSpec.scala +++ b/src/test/scala/stdlib/PatternMatchingSpec.scala @@ -105,4 +105,14 @@ class PatternMatchingSpec extends Spec with Checkers { ) ) } + + def `pattern matching lists part five` = { + check( + Test.testSuccess( + PatternMatching.againstListsVPatternMatching _, + true :: HNil + ) + ) + } + }