"indentazione php" funzionale "

1

Sono un grande fan di 1TB quando si tratta di linguaggi c-like. Ora che php ha ottenuto lambda e chiusure decenti, però, non sono sicuro che lo stile che sto usando per loro (fondamentalmente inventato, abbia qualcosa a che fare con il codice sorgente di jquery) sia l'opzione più leggibile / standard. Cosa pensi? Qualcuno ha dei buoni esempi di 1Tbs + lambda e funziona come parametro?

Ecco un esempio del mio codice.

function bold_search_terms($needle, $haystack) {
  return str_replace(
     $occurrencies = array_filter (
         explode(" ",$haystack),
         function ($var) use ($needle) {
            return(levenshtein($var, $needle) < 3);
         }
     ),
     array_map(
          function ($var) {
              return "<strong>$var</strong>";
          },
          $occurrencies
     ),
     $haystack
  );
}
    
posta cbrandolino 07.04.2011 - 09:52
fonte

2 risposte

1

Non sono un grande fan dell'inserimento di lambda in questo modo quando devono estendersi su più righe. Sfortunatamente PHP è abbastanza dettagliato in questo, che richiede

function($something) use ($something_else) { }

al contrario di - per esempio - Perl's

sub { }

dove i parametri e le variabili racchiuse vengono assunte / rilevate dall'oscilloscopio, consentendo a più lambda di adattarsi in un'unica linea.

Alla fine della giornata si tratta di gusti personali, in questo caso spezzerei la funzione in parti e applicherei str_replace() a valori precalcolati.

    
risposta data 07.04.2011 - 10:11
fonte
1

Se ti piace un po 'più conciso, prendi ispirazione da Lisp:

function bold_search_terms($needle, $haystack) {
    return str_replace
        ($occurrences = array_filter
            (explode(" ", $haystack),
            function ($var) use ($needle)
                { return(levenshtein($var, $needle) < 3); }),
        array_map
            (function ($var)
                { return "<strong>$var</strong>"; },
            $occurrences),
        $haystack);
}

Indentazione e nuove righe mostrano l'albero dei parametri. La tua soluzione è eminentemente leggibile così com'è, però.

    
risposta data 07.04.2011 - 12:18
fonte

Leggi altre domande sui tag