Call an object method: Difference between revisions
Content added Content deleted
m (→{{header|LFE}}: Removed unused 'send' function.) |
(→{{header|LFE}}: Updated to show how methods can call other methods) |
||
Line 295:
(export all))
(defun
(let (((binary (id (size 128))) (: crypto rand_bytes 16))
(move-verb '"swam"))
(lambda (message)
(case message
('id
('id (lambda () (car (: io_lib format '"~32.16.0b" (list id)))))▼
(lambda (self)
(car
(: io_lib format
('species
(lambda (self)
species))
('info
(lambda (self)
(: io format
'"id: ~p~nspecies: ~p~n"
(list (get-id self) (get-species self)))))
('move
(lambda (self distance)
(: io format
'"The ~s ~s ~p feet!~n"
(list species move-verb distance))))
('
(fish-class species)))))))
; define
(defun get-method (object command)
(funcall object command))
Line 315 ⟶ 328:
; define object methods
(defun get-id (object)
(funcall (get-method object 'id) object))
(defun move (object distance)▼
(funcall (get-method object 'move) distance))▼
(defun get-species (object)
(funcall (get-method object 'species) object))
(defun get-info (object)
(funcall (get-method object 'info) object))
▲(defun move (object distance)
▲ (funcall (get-method object 'move) object distance))
(defun reproduce (object)
(funcall (get-method object 'reproduce) object))
</lang>
Line 331 ⟶ 347:
> (slurp '"aquarium.lfe")
#(ok object)
> (set mommy-fish (
#Fun<lfe_eval.10.91765564>
> (get-species mommy-fish)
Line 344 ⟶ 360:
> (get-id mommy-fish)
"c549d68e63fedd0a631c5045ccd8fd7f"
> (get-
id: "63f14d20e7c6fbffb6b692bfaf15f845"
species: "Carp"
ok
</lang>
|