Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Scala dreaded underscore

56,830 views

Published on

A reference about every use cases of underscores in the Scala programming language

Published in: Technology, News & Politics
  • In slide #10 f2 should be defined as def f2 = (_:Int).toString Plus I wouldn't call these partial functions. PartialFunction is a different concept http://docs.scala-lang.org/overviews/quasiquotes/expression-details.html#partial-function Its a good summay though. Thanks
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • @SkyMarshal great job! recent updates?
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • More Scala symbols and Idiomatic references & cheatsheets
    http://stackoverflow.com/questions/7888944/scala-punctuation-aka-symbols-operators
    http://www.reddit.com/r/scala/comments/lo3i4/scala_punctuation_help/
    http://www.slideshare.net/normation/scala-dreaded
    http://agileskills2.org/blog/2011/05/01/revealing-the-scala-magicians-code-expression/
    http://jim-mcbeath.blogspot.com/2008/09/scala-syntax-primer.html
    http://jim-mcbeath.blogspot.com/2008/12/scala-operator-cheat-sheet.html
    http://scalex.org/
    http://www.artima.com/pins1ed/book-index.html#indexanchor
    http://stackoverflow.com/questions/7656937/valid-identifier-characters-in-scala
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • well done
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Scala dreaded underscore

  1. 1. Scala dreaded _ François Armand
  2. 2. Too many use for _ ? © Normation 2010 - 2
  3. 3. Too many use for _ ? © Normation 2010 - 3
  4. 4. It's always a kind of joker 1/ “Everything” 2/ “Give me a variable name but – I don't care of what it is – and/or – don't want to pollute my namespace with it” © Normation 2010 - 4
  5. 5. 1. Import all Java “import *” © Normation 2010 - 5
  6. 6. 2. var initialization to default value Highly discourage in idiomatic Scala: – Prefer val against var – Try to always initialize a variable © Normation 2010 - 6
  7. 7. 3. Unused variables In higher order functions © Normation 2010 - 7
  8. 8. 3. Unused variables In pattern matching © Normation 2010 - 8
  9. 9. 4. Anonymous parameters In higher order functions © Normation 2010 - 9
  10. 10. 4. Anonymous parameters In partial functions © Normation 2010 - 10
  11. 11. 5. Don't import name in namespace © Normation 2010 - 11
  12. 12. 6. Syntactic sugar for existential type Existential type ? http://stackoverflow.com/questions/1031042/scalas-existential-types Java: – Type erasure and raw types – “?” generic wildcard Scala © Normation 2010 - 12
  13. 13. 6. Syntactic sugar for existential type And in pattern matching © Normation 2010 - 13
  14. 14. And some more _ with an other char 1) Accessors in tuples • ("foo", "bar")._2  // getter for “bar” 2) _* In repeated parameter (Java 1.5 varargs) • String.format("one: %s two: %s", "1" , "2") • String.format("one: %s two: %s", Seq("1","2"):_*) In XML pattern matching • See Scala XML book http://www.scala­lang.org/node/131  In pattern matching, as sequence wildcard • Search for UnapplySeq documentation 3) In identifier name ending with an operator • ex: “query?” not valide name, use “query_?” 4) In setter name • _= http://stackoverflow.com/questions/1392862/scala-overriding-a-non-abstract-def-with-a-var/1393389#1393389 © Normation 2010 - 14
  15. 15. Q&A Thanks ! © Normation 2010 15

×