La valutazione del cortocircuito è una conseguenza della chiamata per nome?

1

Se gli operatori booleani & amp ;, || sono implementati come metodi infissi, quindi non è una valutazione di cortocircuito solo una conseguenza dell'implementazione usando la semantica call-by-name, poiché, ad esempio, il & & il metodo non dovrebbe quindi valutare il secondo argomento in ogni caso se il primo è falso.

Mi sto solo chiedendo perché sono generalmente trattati come argomenti separati (ad es. nel corso di introduzione alla Scala che sto prendendo - link ), ma la valutazione del cortocircuito sembra essere solo una conseguenza della chiamata per nome.

    
posta Ankit Soni 11.12.2013 - 06:54
fonte

2 risposte

1

Risulta che Martin risponda alla domanda esatta 15 minuti dopo nello stesso video! Sì, la valutazione del cortocircuito viene implementata utilizzando gli argomenti call by name. Martin discute proprio questo e definisce la funzione and come segue:

  def and(x:Boolean, y: => Boolean) {
    if (x) y else false
  }

Si noti che se il secondo argomento non era call-by-name, and(false,<infinite loop expr>) non terminerebbe, mentre ci si aspetterebbe che restituisse false a causa della valutazione di cortocircuito.

    
risposta data 11.12.2013 - 07:04
fonte
-1

Non direi che è una conseguenza. È comunque un requisito.

    
risposta data 11.12.2013 - 08:09
fonte

Leggi altre domande sui tag