Merkkijonon pituuden selvittäminen

Clojure:
Merkkijonon pituuden selvittäminen

How to:

Clojure-kielessä merkkijonon pituuden saa selville count-funktiolla:

(count "Moi maailma!") ;=> 12

Mutta eipäs unohdeta countin ystävää - length-funktiota hänen Java isännässään:

(.length "Hyvää päivää!") ;=> 13

Kumpikin tapa antaa sinulle merkkijonon pituuden, digest-muodossa.

Deep Dive

Clojure perustuu Javalle, joten count on käärö Java-metodille. Historiallisesti, laskuri-tyyppiset toiminnot heijastavat tietorakenteiden sisäisiä toteutuksia. Clojuressa count toimii eri tietotyypeillä, ei vain merkkijonoilla.

Vaihtoehtoja? Harvemmin tarvitaan, mutta rekursiivisia ja loop-recur -lähestymistapoja voi nähdä villissä luonnossa. Tässä esimerkki rekursiivisesta mallista merkkijonon pituuden laskemiselle:

(defn recursive-length [s]
  (if (empty? s)
    0
    (inc (recursive-length (subs s 1)))))
    
(recursive-length "Hei taas!") ;=> 9

Vaikkakin ‘count’ on tehokas ja suositeltu, on aina hyvä ymmärtää, miten voisi rakentaa ratkaisun alusta asti, jos se kerran tarvittaisiin.

See Also