Logszintek

Logszintek

Tanulófeladat

Bevezetés

Stringek

A Common Lispben a stringek karakterekből álló vektorok. Úgy írjuk le őket, hogy a karaktereket dupla idézőjelbe tesszük (például "Hello World!").

A stringp predikátum csak akkor ad vissza igazat, ha a megadott érték egy string.

A stringeket a subseq függvénnyel lehet részstringekre bontani, amely megkapja a stringet, egy kezdőindexet és tetszőlegesen egy záróindexet. Az indexelés nullától indul.

(subseq "Hello World" 1 5)   ; => "ello"
(subseq "skip to the end" 5) ; => "to the end"

A stringek egyenlőségét a string= függvénnyel hasonlíthatod össze. Ha a karakterek kis- és nagybetűs írásmódja nem számít, akkor a string-equal-t használhatod.

(string= "macaroni" "macaroni")      ; => T
(string= "macaroni" "MACARONI")      ; => NIL
(string-equal "macaroni" "MACARONI") ; => T

A stringek nagybetűsítését, kisbetűsítését és a szavak kezdőbetűjének nagybetűssé tételét a string-upcase, a string-downcase és a string-capitalize függvénnyel végezheted el.

(string-upcase "not too loud")                ; => "NOT TOO LOUD"
(string-downcase "YELL IT FROM THE ROOFTOPS") ; => "yell it from the rooftops"
(string-capitalize "practical COMMON LiSP")   ; => "Practical Common Lisp"

Utasítások

Ebben a feladatban olyan kódot írsz, amely segít Larrynek, a Lisp-űrlénynek feldolgozni és formázni a naplószövegeket. Ezek a naplószövegek különféle rendszerektől érkeznek, és fel kell dolgozni őket, hogy az üzeneteik megjeleníthetők legyenek egy informatív monitorozási kijelzőn.

A naplószövegek formája "[<level>]: <message>". A szint a következő értékek egyike: info, warn vagy ohno.

1. Az üzenet kinyerése

Definiálj egy log-message nevű függvényt, amely egy naplószöveget vesz át, és a benne lévő üzenetre értékelődik ki.

(log-message "[ohno]: whoops!") ; => "whoops!"

2. A súlyosság meghatározása

A naplószöveg szintje határozza meg a súlyosságát.

  • az info szint :everything-ok súlyosságot jelent
  • a warn szint :getting-worried súlyosságot jelent
  • az ohno szint :run-for-cover súlyosságot jelent

Definiálj egy log-severity nevű függvényt, amely egy naplószöveget vesz át, és a megfelelő súlyosságra értékelődik ki.

(log-severity "[warn]: might want to get that checked") ; => :getting-worried

3. A valóság szeszélyeinek kezelése

Sajnos előfordul, hogy a naplószövegek nincsenek mindig helyesen formázva. Egészen pontosan a napló szintje nem feltétlenül csupa kisbetű, ahogy fentebb megadtuk. Módosítsd a log-severity függvényt, hogy kezelje ezt az esetet.

(log-severity "[WaRn]: string case system failing") ; => :getting-worried

4. A naplóüzenet újraformázása a napló súlyossága szerint

A súlyosságtól függően az üzenetet különbözőképpen kell módosítani:

  • :everything-ok súlyosság esetén az üzenetet csupa kisbetűre kell alakítani.
  • :getting-worried súlyosság esetén az üzenetben minden szót nagybetűvel kell kezdeni.
  • :run-for-cover súlyosság esetén az üzenetet csupa nagybetűre kell alakítani.

Definiálj egy log-format nevű függvényt, amely egy naplóüzenetet vesz át, és egy megfelelően formázott üzenetre értékelődik ki.

(log-format "[ohno]: whoops!") ; => WHOOPS!
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Common Lisp Exercism

Készen állsz elkezdeni a(z) Logszintek feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Common Lisp nyelvet 27 fogalom92 feladat segítségével, valódi emberi mentorálással, mindez ingyen.