Ho creato una funzione per verificare se la prima stringa termina con una seconda stringa.Verifica se la stringa termina con una stringa data in clojure
In Java abbiamo metodo già pronto a controllare questo, ma in Clojure non sono riuscito a trovare un metodo di funzione personalizzata così ho scritto come segue:
(defn endWithFun [arg1 arg2]
(= (subs arg1 (- (count arg1) (count arg2)) (count arg1)) arg2))
Uscite:
> (endWithFun "swapnil" "nil")
true
> (endWithFun "swapnil" "nilu")
false
Questo sta funzionando come previsto.
Voglio sapere, c'è un'alternativa simile? Anche nel mio caso, paragono caso con attenzione. Voglio anche ignorare la distinzione tra maiuscole e minuscole.
Grazie, questo è quello che stavo cercando. ora posso vedere che posso usare java api della classe 'String' usando' (.) ', ho provato' (subs "swapbil" 1 4) 'e' (. "swapnil" sottostringa 1 4) 'entrambi danno ans * * wap **, c'è qualche degrado delle prestazioni se utilizzo java in clojure? o entrambi avranno le stesse prestazioni. – swapy
Immagino che le prestazioni dovrebbero essere comparabili. Puoi costruire un rapido micro-benchmark se sei preoccupato. –
In generale, l'unica penalità legata alle prestazioni che potresti subire utilizzando Java in Clojure è l'uso della reflection per cercare un metodo in fase di esecuzione se la classe di un oggetto non può essere dedotta in fase di compilazione. Le funzioni 'clojure.string' usano tutti i tipi di suggerimenti per evitare riflessioni, quindi ci dovrebbe essere una differenza di prestazioni trascurabile tra le versioni Clojure e Java. – Alex