Scala, un Java migliore
Di Mingo/Marrocco
Chapters
- 01. JugTorino Meeting Febbraio 2010 — 00'08"
- 02. Speakers — 00'09"
- 03. Scala, un Java migliore — 01'26"
- 04. Scalable Language — 02'18"
- 05. Object Oriented — 02'01"
- 06. Object Oriented Pure — 02'27"
- 07. Functional — 01'53"
- 08. Java Virtual Machine — 03'31"
- 09. println(1 * 2) val numbers = List(1, 2, 3) numbers.foreach(n => println(n)) — 03'10"
- 10. $ scala scala> println(1 * 2) 2 scala> var numbers = List(1, 2, 3) scala> numbers.foreach(n => println(n)) 1 2 3 — 01'20"
- 11. Scala conventions — 00'41"
- 12. $ scala scala> println(1 * 2) 2 scala> var numbers = List(1, 2, 3) scala> numbers.foreach(n => println(n)) 1 2 3 — 01'19"
- 13. return is almost optional — 01'40"
- 14. def sum(a: Int, b: Int) = return a + b — 01'55"
- 15. scala> def sum(a: Int, b: Int) = a + b scala> println(sum(1, 2)) 3 — 01'40"
- 16. ; is optional — 00'08"
- 17. def sum(a: Int, b:Int) = { println(a); println(b); a + b; } — 00'29"
- 18. Type inference — 02'47"
- 19. Type definition is almost optional — 01'16"
- 20. def sum(a: Int, b:Int) = { println(a); println(b); a + b; } — 01'18"
- 21. val a:Int = 1 — 00'48"
- 22. def funz(a:Int) = 1 — 00'51"
- 23. def funz(a: Int):Int = 1 — 02'03"
- 24. Operator Overloading — 00'49"
- 25. Scala hasn't operators — 00'28"
- 26. Operators are object's functions — 00'56"
- 27. + - * / are valid function names — 02'44"
- 28. Lenient invocation syntax — 00'40"
- 29. object.method(object) object method object — 00'34"
- 30. object.+(object) object + object — 00'13"
- 31. 1.+(1) 1+1 — 00'12"
- 32. Operator precedence? — 00'12"
- 33. 1.+(1).+(2).*(2) == 8 — 00'31"
- 34. 1.+(1).+(2).*(2) == 6 — 01'22"
- 35. Immutability rocks — 02'40"
- 36. Value vs Variable — 00'54"
- 37. A variable is mutable — 00'05"
- 38. var a = 1 a = 2 // ok — 00'11"
- 39. val a = 1 a = 2 // error: reassignment to val — 00'24"
- 40. scala val ~= java final attribute — 00'53"
- 41. classes — 00'03"
- 42. public class Car { private int milesDriven; private final int age; public Car(int age) { this.age = age; } public void driveFor(int distance) { milesDriven += distance; } public int getAge() { return age; } public int getMiles() { return miles; } } — 00'43"
- 43. class Car(val age:Int) { private var milesDriven = 0 def driveFor(distance:Int) = milesDriven += distance def miles = milesDriven } — 02'46"
- 44. val car = new Car(2010) car driveFor 100 println(car.age) println(car.miles) — 01'36"
- 45. class Car(val age:Int) { private var milesDriven = 0 def driveFor(distance:Int) = milesDriven += distance def miles = milesDriven } — 00'14"
- 46. val car = new Car(2010) car driveFor 100 println(car.age) println(car.miles) — 01'12"
- 47. Class constructor? — 00'03"
- 48. Class costructor is class body itself! — 00'24"
- 49. class Person(name:String) { var age = 0 println(name) } — 00'47"
- 50. Costructors override — 01'03"
- 51. class Person(name:String) { var age = 0 def this(name:String, anAge:Int) { this(name) age = anAge } } — 06'22"
- 52. Map — 01'12"
- 53. write(/tmp/output) { out => out write scala rocks! } — 05'48"
- 54. switch(poor) { case 1: doSomething(); break; case 2: doSomethingElse(); break; default: inOtherCases(); } — 00'13"
- 55. Scala match is powerfull — 00'04"
- 56. def activity(day: String) { day match { case sunday => println(sleep) case _ => println(code) } } List(monday, sunday).foreach { activity } — 01'06"
- 57. can match int, string.. — 00'03"
- 58. can match list! — 00'03"
- 59. List(1, 2) match { case List(2, 1) => println(!match) case List(1, 2) => println(match!) } — 00'28"
- 60. can match case class! — 00'02"
- 61. case class? — 00'02"
- 62. are special classes used in pattern matching — 00'24"
- 63. case class Red extends Color(red) case class Blue extends Color(blue) def brush(color:Color) { color match { case Red() => print(fire) case Blue() => print(water) } } brush(Red()) — 01'41"
- 64. extract matching values — 00'03"
- 65. case class Color(name:String) val red = Color(red) red match { case Color(name) => println(name) } — 15'32"
Embed
Copy the following HTML snippet on your website