Call-by-name in Scala

Parameter-Typ ist => T, entspr. „eine Aktion, die ein T liefert`` (in Haskell: IO T)

call-by-name

def F(b:Boolean,x: =>Int):Int = { if (b) x*x else 0 }
F(false,{print ("foo "); 3})
//     res5: Int = 0
F(true,{print ("foo "); 3})
//    foo foo res6: Int = 9
Man benötigt call-by-name zur Definition von Abstraktionen über den Programmablauf.

Übung: If, While als Scala-Unterprogramm



Johannes Waldmann 2014-03-31