Funzioni pure e ambito esterno [duplicato]

2

Scusa la mia ignoranza, vengo dalla famiglia di lingue C ma a zero esposizione a linguaggi funzionali. Ho letto che le funzioni pure generano solo output basati su un dato input. Lo stesso input fornisce la stessa uscita indipendentemente dalle altre condizioni. Ma qualcosa mi infastidisce.

Un caso semplice sarebbe array.filter che contiene un array e una funzione per determinare cosa viene incluso e cosa no.

const newArray = oldArray.filter(item => condition);

// or put verbosely

import somethingFromTheOutside from './a-module';

const newArray = oldArray.filter(filterFunction);

function filterFunction(item, index, arr){
  return item.value = somethingFromTheOutside;
}

Il callback riceve solo l'elemento dell'array corrente, l'indice dell'oggetto e l'array stesso. Ora se il callback dovesse rimanere puro, condition non dovrebbe estendersi allo scope esterno e operare solo sui 3 pezzi di informazione che gli sono stati dati. Ma come sarebbe possibile array.filter se la richiamata non è autorizzata a raggiungere i dati al di fuori della funzione?

Quali modelli ci sono in modo che quanto sopra possa essere ottenuto utilizzando le funzioni pure? Inoltre, se le funzioni pure non sono in grado di raggiungere l'ambito circostante, ciò non rende l'intero meccanismo di risoluzione inutile se ci occupiamo di pure funzioni? Sto capendo questo giusto?

    
posta Joseph 30.08.2016 - 01:38
fonte

1 risposta

0

Ecco la risposta concisa.

Quando viene valutata l'espressione item => condition , il valore di condition diventa una parte della funzione che risulta. Valori diversi di condition ti daranno diverse funzioni. In questo modo la funzione può utilizzare il valore di condition pur rimanendo puro.

    
risposta data 30.08.2016 - 01:46
fonte

Leggi altre domande sui tag