我正在學習CLOS中的泛型函數。不能在泛型函數方法中使用變量嗎? (CLOS/LISP)
由於我在教科書和在線中找到的例子類型,我感到非常困惑。這些例子總是使用有多個派遣的事實。根據參數類型,執行不同的計算。但是,爲什麼這些論據本身從未在例子中被使用?
實施例的代碼從Wikipedia
; declare the common argument structure prototype
(defgeneric f (x y))
; define an implementation for (f integer t), where t matches all types
(defmethod f ((x integer) y) 1)
(f 1 2.0) => 1
; define an implementation for (f integer real)
(defmethod f ((x integer) (y real)) 2)
(f 1 2.0) => 2 ; dispatch changed at runtime
在上述示例中,可以看到該方法本身實際上從未使用x
或y
變量。所有這些例子都不使用變量是巧合嗎?他們可以用嗎?
此外,它是寫在Wikipedia:
方法是從類分開定義,他們有沒有特殊的訪問(例如,「這個」,「自我」,或「受保護」),以一流的插槽。
好的,所以方法沒有「this」,因爲它們不屬於一個類。但爲什麼泛型函數方法有一個接收器呢?接收器是不是類似於課堂上的「這個」?
這讓這一切清楚了!接收器只是一個參數..當然!謝謝! –