diff options
author | Joel Bradshaw <cincodenada@gmail.com> | 2018-02-28 02:44:18 -0800 |
---|---|---|
committer | ven <vendethiel@hotmail.fr> | 2018-02-28 11:44:18 +0100 |
commit | 52a4a4ac95f3df89b574458ec8e951458b2f8f85 (patch) | |
tree | b11076370a1a20a1bd89dbc44de7ae92009af1a9 /scala.html.markdown | |
parent | a526d2f4b4d8e1bcaff6d49df41152dd6cca7cdf (diff) |
[scala/en] A few editing improvements as I read through (#2768)
* A few editing improvements as I read through
Take, leave, or modify as desired!
Specifically:
* Acknowledge weirdness of no parameters in `foreach println`
* Mention what `Unit` is
* Clarify abstract comments
* Fix capitalization of George in example
* Explicitly introduce regex
* Re-iterate `s` in comments, it's gotten very separated
* Reword explanation of foreach
Diffstat (limited to 'scala.html.markdown')
-rw-r--r-- | scala.html.markdown | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/scala.html.markdown b/scala.html.markdown index 78053b40..78893b30 100644 --- a/scala.html.markdown +++ b/scala.html.markdown @@ -276,6 +276,7 @@ r foreach println // NB: Scala is quite lenient when it comes to dots and brackets - study the // rules separately. This helps write DSLs and APIs that read like English +// Why doesn't `println` need any parameters here? Stay tuned for Functional Programming below! (5 to 1 by -1) foreach (println) // A while loop @@ -299,7 +300,7 @@ do { // Recursion is the idiomatic way of repeating an action in Scala (as in most // other functional languages). // Recursive functions need an explicit return type, the compiler can't infer it. -// Here it's Unit. +// Here it's Unit, which is analagous to a `void` return type in Java def showNumbersInRange(a: Int, b: Int): Unit = { print(a) if (a < b) @@ -412,8 +413,8 @@ class Dog(br: String) { private def sleep(hours: Int) = println(s"I'm sleeping for $hours hours") - // Abstract methods are simply methods with no body. If we uncomment the next - // line, class Dog would need to be declared abstract + // Abstract methods are simply methods with no body. If we uncomment the + // def line below, class Dog would need to be declared abstract like so: // abstract class Dog(...) { ... } // def chaseAfter(what: String): String } @@ -455,7 +456,7 @@ george.phoneNumber // => "1234" Person("George", "1234") == Person("Kate", "1236") // => false // Easy way to copy -// otherGeorge == Person("george", "9876") +// otherGeorge == Person("George", "9876") val otherGeorge = george.copy(phoneNumber = "9876") // And many others. Case classes also get pattern matching for free, see below. @@ -523,7 +524,9 @@ def matchPerson(person: Person): String = person match { case Person(name, number) => "We matched someone : " + name + ", phone : " + number } -val email = "(.*)@(.*)".r // Define a regex for the next example. +// Regular expressions are also built in. +// Create a regex with the `r` method on a string: +val email = "(.*)@(.*)".r // Pattern matching might look familiar to the switch statements in the C family // of languages, but this is much more powerful. In Scala, you can match much @@ -589,6 +592,8 @@ List("Dom", "Bob", "Natalia") foreach println // Combinators +// Using `s` from above: +// val s = Set(1, 3, 7) s.map(sq) @@ -608,8 +613,8 @@ List( ).filter(_.age > 25) // List(Person("Bob", 30)) -// Scala a foreach method defined on certain collections that takes a type -// returning Unit (a void method) +// Certain collections (such as List) in Scala have a `foreach` method, +// which takes as an argument a type returning Unit - that is, a void method val aListOfNumbers = List(1, 2, 3, 4, 10, 20, 100) aListOfNumbers foreach (x => println(x)) aListOfNumbers foreach println |