我正在嘗試一些計劃中的樂趣。我正在嘗試創建一個Area函數來獲取它正在操作的事物的類型,然後根據對象的類型調用不同的函數。這裏是我的代碼:如何在Scheme中使用eval中的外部變量?
(define (area object)
(if (not (null? (eval (word 'area- (get-type object)))))
(eval (list (word 'area- (get-type object)) 'object))
#f
)
)
Scheme不喜歡這個,因爲它說對象是一個未綁定的變量。不,我不能拿走報價,因爲那實際上是將價值放在那裏,然後Scheme抱怨列表不正確。
我能做些什麼來使用eval中的對象的值?
注:方案顯然抓住全局變量「對象」就好了,所以它基本上忽略它在一個函數內。
一些相關語言的信息在這裏:http://docs.racket-lang.org/guide/eval.html,這似乎表明Scheme中沒有解決方案,但是如果您知道一個我想聽到它。
就像Eli所說的那樣,使用基於名稱的調度機制是非常糟糕和破裂的。 Scheme不是PHP。只是不要去那裏。 :-P – 2010-10-02 08:46:11
爲什麼這樣做是不正確的,克里斯? – 2010-10-03 01:10:24