Additions:
println("Tempo speso nel corpo del mywhile: " + MyWhile.time + " ms")
Deletions:
println("Tempo speso nel corpo del mywhile: " + MyWhile.time)
Additions:
Esempio di uso:
> scalac MyWhile.scala
> scala MyWhile uno due tre quattro
arg: uno
arg: due
arg: tre
arg: quattro
Tempo speso nel corpo del mywhile: 2.0
Additions:
Car("Open Zafira", 2008, "Anna"),
Car("Audi Quattro", 2013, "Ron"),
Car("Rover 220 SDI", 1999, "Anna"))
Deletions:
Car("Open Zafira", 2008, "Anna"),
Car("Audi Quattro", 2013, "Ron"),
Car("Rover 220 SDI", 1999, "Anna"))
Additions:
Car("Open Zafira", 2008, "Anna"),
Car("Audi Quattro", 2013, "Ron"),
Car("Rover 220 SDI", 1999, "Anna"))
Deletions:
Car("Open Zafira", 2008, "Anna"),
Car("Audi Quattro", 2013, "Ron"),
Car("Rover 220 SDI", 1999, "Anna"))
Additions:
==Esercizio 4: nuovi costrutti in Scala==
%%(java;MyWhile.scala)
object MyWhile extends App {
var time = 0.0 // tempo totale speso nel corpo del mywhile
// definizione di un nuovo costrutto in Scala
def mywhile(test: =>Boolean)(body: =>Unit):Unit = {
if (!test) ()
else {
val start = System.currentTimeMillis()
body
time += System.currentTimeMillis()-start
mywhile(test)(body)
}
// esempio di uso del costrutto
var i = 0
mywhile(i < args.size) {
println("arg: "+args(i))
i += 1
println("Tempo speso nel corpo del mywhile: " + MyWhile.time)
Additions:
implicit def intToMioInt(i:Int) = MioInt(i) // questo serve per rendere possibile 12 mcd 8
implicit def mioIntToInt(i:MioInt) = i.x // questo serve per rendere possibile MioInt(10) + 7
Deletions:
implicit def intToMioInt(i:Int) = MioInt(i)
implicit def mioIntToInt(i:MioInt) = i.x
Additions:
Cosa bisognerebbe scrivere per poter compilare ed eseguire il seguente programma di test?
==Esercizio 3: ancora conversioni implicite==
Cosa bisognerebbe scrivere per poter compilare ed eseguire il seguente programma di test?
import A2._
object A2Main extends App {
val r1:Int = 12 mcd 8
println(r1+" [corretto=4]")
val r2:Int = 21 mcd 14
println(r2+" [corretto=7]")
val r3 = MioInt(10) + 7
println(r3+" [corretto=17]")
object A2 {
implicit def intToMioInt(i:Int) = MioInt(i)
implicit def mioIntToInt(i:MioInt) = i.x
case class MioInt(x:Int) {
def mcd(y:Int):Int =
if (y==0) x else y mcd x%y
Deletions:
Cosa bisognerebbe fare per poter compilare ed eseguire il seguente programma di test?
Additions:
==Esercizio 2: conversioni implicite==
Cosa bisognerebbe fare per poter compilare ed eseguire il seguente programma di test?
%%(java;Test.scala)
import MiaStringa._
object Test extends App {
val s = "ciao" concatenaCon "pippo"
println(s)
%%(java;MiaStringa.scala)
import scala.language.implicitConversions
object MiaStringa {
case class MiaStringa(x:String) {
def concatenaCon(y:String) = x+y
implicit def stringToMiaStringa(s:String) = MiaStringa(s)
Additions:
==Esercizio 1: data analytics==
Deletions:
==Esercizio di esame==
Additions:
o => cars.filter(_.owner==o)
.reduce((a,b) => if (a.year
.year
Deletions:
o => cars.filter(_.owner==o).
reduce((a,b)=>
if (a.year
else b).year
Additions:
Soluzione:
%%(java;A1.scala)
object A1 {
def select(cars:List[Car], owners:List[String]):List[Int] = {
owners.map(
o => cars.filter(_.owner==o).
reduce((a,b)=>
if (a.year
else b).year
)
}
Additions:
%%(java;A1Main.scala)
Car("Open Zafira", 2008, "Anna"),
Car("Audi Quattro", 2013, "Ron"),
Car("Rover 220 SDI", 1999, "Anna"))
Deletions:
%%(A1Main.scala)
Car("Open Zafira", 2008, "Anna"),
Car("Audi Quattro", 2013, "Ron"),
Car("Rover 220 SDI", 1999, "Anna"))
Additions:
Car("Open Zafira", 2008, "Anna"),
Car("Audi Quattro", 2013, "Ron"),
Car("Rover 220 SDI", 1999, "Anna"))
Deletions:
Car("Open Zafira", 2008, "Anna"),
Car("Audi Quattro", 2013, "Ron"),
Car("Rover 220 SDI", 1999, "Anna"))