Kurzusok
/
Common Lisp
Common Lisp
/
Tanterv
/
Több érték
Tö

Több érték ebben a kurzusban: Common Lisp

3 feladat

A(z) Több érték fogalomról

A Common Lispben egy függvény nem csak egy értéket adhat vissza, hanem több értéket is. Például a floor, amely lefelé kerekít a nulla felé, két értéket ad vissza: az első a kerekített érték, a második pedig a maradék.

(floor 3.5) ; => 3
            ;    0.5

(A visszaadott több értéket a kimenet külön sorain fogjuk bemutatni.)

Több érték visszaadása

Ha azt szeretnéd, hogy egy függvény több értéket adjon vissza, erre a values accessor szolgál:

(defun three-numbers () (values 1 2 3))
(three-numbers) ; => 1
                ;    2
                ;    3

Ha van egy értéklista, amit vissza szeretnél adni, akkor használhatod a value-list-et:

(values-list '(a b c)) ; => a
                       ;    b
                       ;    c

Több érték kezelése

Ha csak az első érték érdekel, semmi különöset nem kell tenned, a nyelv elintézi helyetted:

(+ (values 1 2 3) (values 10 20 30)) ; => 11

Ha azonban a többi értéket is el akarod érni, több függvényt is használnod kell.

Két fő makró a multiple-value-list és a multiple-value-bind. Arra szolgálnak, hogy körbevegyenek egy több értéket visszaadó kifejezést, és elkapják az összes értéket. Az első az összes értékből listát készít. A második lehetővé teszi, hogy változókat köss az egyes értékekhez.

(multiple-value-list (values 1 2 3))                   ; => (1 2 3)
(multiple-value-bind (a b c) (values 1 2 3) 
   (+ a b c)) ; => 6

Vedd figyelembe, hogy az a, b és c változóknak csak a multiple-values-bind belsejében van scope-juk.

Egy másik hasznos makró az nth-value. Ez olyan, mint a listák nth függvénye abban, hogy egy több értékből álló halmaz „nth” elemét adja vissza:

(nth-value 0 (values 1 2 3 )) ; => 1
(nth-value 1 (values 1 2 3 )) ; => 2
(nth-value 2 (values 1 2 3 )) ; => 3
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg

Tanuld meg a(z) Több érték fogalmat

A gyakorlás zárolva

Oldj fel még 1 feladatot, hogy gyakorolhasd a(z) Több érték fogalmat