« Wie jeder der in der IT Branche beschäftigt ist | Main| SOA und wie es dazu kam!! »

Urlaub -> Scala (2)

0
Category
Call-By-Reference und Call-By-Value sind (sollten) ja jedem Programmierer bekannt sein und die Anwendung sollte keine große Probleme bringen

Call-By-Name existiert in Scala -> Hier die Spec:

4.6.1 By-Name Parameters
Syntax:
ParamType ::= ‘=>’ Type
The type of a value parameter may be prefixed by =>, e.g. x: => T . The type of
such a parameter is then the parameterless method type => T . This indicates that
the corresponding argument is not evaluated at the point of function application,
but instead is evaluated at each use within the function. That is, the argument is
evaluated using call-by-name.
Um das ganze ein wenig fasssbarer zu machen, ein kleines Beispiel:

def nano() = {
        println("Getting nano")
        System.nanoTime
}

def printNano(t : Long) = {
        println("In printNano")
        println("Param : " + t)
        t
}

println(printNano(nano()))

Erwarteter Output auf der Console ->
Getting nano
In printNano
Param : 78383711083965
78383711083965

Oder so ähnlich
Nun mit einem Call-By-Name ->

def nano() = {
        println("Getting nano")
        System.nanoTime
}

def printNano(t: => Long) = {
        println("In printNano")
        println("Param : " + t)
        t
}

println(printNano(nano()))

Man beachte, dass es nur eine kleine Winzigkeit von Unterschied im Code gibt =>
Die Methode nano wird nun zweimal aufgrufen, und zwar immer an den Stellen, wo eine Auswertung der Variablen t stattfindet. Es wird eine Parameterlose Funktion übergeben!
Output:
In printNano
Getting nano
Param : 78424935617021
Getting nano
78424964560567

Gruß JJR

Post A Comment

:-D:-o:-p:-x:-(:-):-\:angry::cool::cry::emb::grin::huh::laugh::lips::rolleyes:;-)

Amazon


Impressum

Firmenname: Peanuts-Soft
Straße Nummer: Biinger Strasse 8
PLZ Ort: 55263 Wackernheim
Telefon: +491772134526
E-Mail: joerg.reck @ peanuts-soft.de
Disclaimer: Peanuts-Soft übernimmt keine Garantie dafür, dass die auf dieser Website bereitgestellten Informationen vollständig, richtig und stets aktuell sind. Dies gilt auch für alle Links, auf die verwiesen wird. Peanuts-Soft ist für die Inhalte, auf die per Link verwiesen wird, nicht verantwortlich. Peanuts-Soft haftet nicht für konkrete, mittelbare und unmittelbare Schäden oder Schäden, die durch fehlende Nutzungsmöglichkeiten, Datenverluste oder entgangene Gewinne – sei es aufgrund der Nichteinhaltung vertraglicher Verpflichtungen, durch Fahrlässigkeit oder eine andere unerlaubte Handlung – im Zusammenhang mit der Nutzung von Dokumenten oder Informationen bzw. der Erbringung von Dienstleistungen entstehen, die auf dieser Web Site zugänglich sind.
Datenschutz: Inhalt und Gestaltung der Internetseiten sind urheberrechtlich geschützt. Eine Vervielfältigung der Seiten oder deren Inhalte bedarf der vorherigen schriftlichen Zustimmung von Peanuts-Soft.


Locations of visitors to this page

Powered By

Domino BlogSphere
Version 3.0.2