3 ms·
I disagree. The following all mean the same thing (off the top of my head): obj.( (a, b) => a + "." + b) obj.(_ + "." + _) obj { (a,b) => a + "." + b
by runT1ME 15y ago
I disagree. The following all mean the same thing (off the top of my head):
obj.( (a, b) => a + "." + b)
obj.(_ + "." + _)
obj { (a,b) => a + "." + b }
Seems to me that's syntactic sugar. The flexibility of Scala is the source of my love/hate relationship with the language. That being said, it's still my favorite thing to code in when I get the opportunity...
- Meai 15y agoScala has to be the worst offender of language complexity I have ever seen. A language isn't supposed to make you feel smart, it's supposed to be easy to read, maintain and write powerful code in. Have you had a look at larger Scala codebases? Every single code line needs to be read consciously, quickly scanning over code is impossible with Scala.
- dxbydt 15y agoI think you should look at DSLs. Seriously. You can code a domain specific options parser in scala so that your final code actually looks like this - "@ $20 spot, price 5 calls, @ $25 strike, 59 days to expiry" This is as simple as it can get. In fact, the senior quants literally say the above line word for word. So its practically English. Can't get any simpler than that. Reference: http://www.scala-lang.org/node/1403 http://www.scala-lang.org/node/1403
- smcj 15y agoI had a completely different experience. Code is very readable, because it describes what it does and not how.
- spullara 15y agoReadable but not editable. The person editing or debugging your code needs to know how it does it.
- jrockway 15y agoHow much Scala have you read and written? I hear "xxx is too complicated" quite often, and it's always from people whose experience is having visited the language website once or twice. Of course code is hard to read if you don't know the language.
- Meai 15y agoI have read a book on the subject. Look at this code and tell me with a straight face that it's easily readable: https://github.com/jdegoes/blueeyes/blob/master/src/main/scala/blueeyes/core/http/ByteRange.scala https://github.com/jdegoes/blueeyes/blob/master/src/main/sca... The sheer amount of weird language tokens is disturbing.
- fhars 15y agoOnly the first two mean the same thing, and that is not syntactic sugar, but syntax error: error: identifier expected but '(' found. What you probably meant is that a b c and a.b(c) are the same thing. And admire the effect of the semicolons in http://article.gmane.org/gmane.comp.lang.scala.debate/2231 http://article.gmane.org/gmane.comp.lang.scala.debate/2231
- runT1ME 15y agoAll three can be used for the same functionality: scala> object Test { | def myMethod( f:(String,String)=>String) { | println("MyMethod result =" + f("a", "b")) | } | } defined module Test scala> Test.myMethod( _ + "&" + _ ) MyMethod result =a&b scala> Test.myMethod( (a,b)=> a+"&"+b ) MyMethod result =a&b scala> Test.myMethod { (a,b)=>a+"&"+b } MyMethod result =a&b
- riobard 15y agoOptional dots, semicolons and sometimes parenthesis, underscores as placeholders, and interchangeable parenthesis and braces are about the only syntactic sugar in Scala AFAIK. They are really minimal compared to, for example, Python decorator syntax.
- pdhborges 15y agofor loops are also syntactic sugar and the case class matching thing case class Lol (a: Int, b: Int) Lol(2, 3) match { case x Lol y => x }