Skip to content

Instantly share code, notes, and snippets.

@quiye
Created April 13, 2018 11:19
Show Gist options
  • Save quiye/920363eb1e61c64c29de5f9dc33a4483 to your computer and use it in GitHub Desktop.
Save quiye/920363eb1e61c64c29de5f9dc33a4483 to your computer and use it in GitHub Desktop.
?.scala
scala> List(1,2,3).map({println("1");_+1}).map({println("a"); _+1})
1
a
res21: List[Int] = List(3, 4, 5)
scala> List(1,2,3).map({println("1");_+1}).map(a=>{println("a"); a+1})
1
a
a
a
res22: List[Int] = List(3, 4, 5)
@quiye
Copy link
Author

quiye commented Apr 14, 2018

scala> List(1,2,3).map({println("1");a => a+a})
1
res53: List[Int] = List(2, 4, 6)

scala> List(1,2,3).map({a => println("1");a+a})
1
1
1
res54: List[Int] = List(2, 4, 6)

@quiye
Copy link
Author

quiye commented Apr 14, 2018

理由がわかった。

scala> val g = {println("1");a:Int => a+a}
1
g: Int => Int = $$Lambda$1389/575389119@18391220

scala> val z = (a:Int) => {println("1");a+a}
z: Int => Int = $$Lambda$1390/762846891@2c2c9a4

scala> g(5)
res71: Int = 10

scala> z(5)
1
res72: Int = 10

となるが、よくみると

scala> val g = {
     | println("1")
     | a:Int => a + a //ここが返り値となりgに代入される
     | }
1
g: Int => Int = $$Lambda$1391/1516087924@1fd6c7eb

scala> val z = {
     | (a:Int) => {println("1");a+a} // ここが返り値となりzに代入される
     | }
z: Int => Int = $$Lambda$1392/63081259@1055adc6

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment