Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Chodziosposóbmyślenia9
Chodziosposóbmyślenia
Takwięcwpierwszymprzybliżeniuprogramowaniefunkcyjnetoprogramo-
waniezczystymifunkcjamiiniemutowalnymstanem,wprzeciwieństwiedo
programowaniaimperatywnego,któresilniezależyodmutowalności.Wokół
tejniemutowalnejpodstawymamyzbiórtechnikjęzykowychicech,któreza-
stępująmutowalnetechnikiimperatywne.Ichanalizadanamlepszepoczucie,
czymjestmyślenieiprogramowaniefunkcyjne.
Popatrzmynaprostyprzykładltrowanielistytak,abyzawierałatylkoliczby
nieparzyste.
publicList<Integer>filterOdds(List<Integer>list){
List<Integer>filteredList=newArrayList<Integer>();
for(Integercurrent:list){
if(1==current%2){
filteredList.add(current);
}
}
returnfilteredList;
}
Tojestkodimperatywny.Iterujemypoliścieisprawdzamydlakażdegoele-
mentu,czyliczbajestnieparzysta,obliczającjejmodulo.Moglibyśmynapi-
saćjejzawartośćniecojaśniej,gdybyśmywyciągnęlisprawdzeniedofunkcji
pomocniczejinadalijejnazwę.
publicList<Integer>filterOdds(List<Integer>list){
List<Integer>filteredList=newArrayList<Integer>();
for(Integercurrent:list){
if(isOdd(current)){
filteredList.add(current);
}
}
returnfilteredList;
}
privatebooleanisOdd(Integerinteger){
return1==integer%2;
}
Conależyzrobić,jeślichcemyterazutworzyćfunkcję,którapozwolinam
odltrowaćliczbyparzystezamiastnieparzystych?Jedynyfragmentkodu,
którytrzebazmienić,towywołanieisEvenzamiastisOdd.
publicList<Integer>filterEvens(List<Integer>list){
List<Integer>filteredList=newArrayList<Integer>();
for(Integercurrent:list){
if(isEven(current)){