Evrim ULU wrote:
Volkan YAZICI wrote:

On Dec 20 11:39, Emre Sevinç wrote:
Açıkcası ben HyperSpec'teki ilgili bölümleri
okudum. (Bkz. slime-hyperspec-lookup) Hatta
[EMAIL PROTECTED]'tekilerin de fikrini aldım. HyperSpec'teki
açıklama, konuya yeni başladığımdan olsa gerek, biraz karmaşık geldi
bana. Benim listeden asıl ricam nerede, ne zaman SETQ, SETF
kullanacağına dair convention tadında bir kaç cümle duymaktı.

Hm, listeye vakit ayirmak zevkli oluyor, ke$ke daha fazla vakit olsa.

Setf, setq'nun yenisi diye dusunulebilir. (sadece yensi diye dusunmek
yanli$ olur tabii). Pratikteki fark ise setf ile ozel setter tanimlama
olanagi.

(defun session-user (&optional (session (context.session *context*)))
  (%session-user session))

(defsetf session-user (&optional session) (new)
  `(setf (%session-user (or ,session
                (context.session *context*))) ,new))
Gene senle konuşmaya başladık Evrim.

Biraz örnek belki daha açıklayıcı olabilir. SETQ bir değişkene değer atamak için kullanılıyordu. Örn:

(setq core-members '(aycan evrim aytek emre tahsin))

Bizim ekipten birini kovup başka birini alacak olsak:

(setq core-members (cons 'onur (cdr core-members)))

SETF makrosu ise daha karmaşık listelerde daha anlaşılır işlem yapmamıza olanak veriyor. Örn:

(setf (car core-members) 'onur)

SETF makrosu basit atamalar için SETQ olarak açılıyor, bu nedenle artık hiç düşünmeden hep SETF kullanıyoruz.

Sevgiler...

--
Aycan iRiCAN
C0R3 Computer Security Group
http://people.core.gen.tr/~aycan.irican/


_______________________________________________
cs-lisp mailing list
cs-lisp@cs.bilgi.edu.tr
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp

Cevap