cost 333 ms
為什么 Common Lisp CLOS 匹配 arguments 是錯誤的 class 的方法?

[英]Why Common Lisp CLOS matches on a method where the arguments are the wrong class?

我正在嘗試學習 CLOS 並遇到了這個驚喜。 我的 arguments 上似乎有 3 個動作方法不匹配。當我運行 tryme function 時,為什么最后一個參數標記為“:c”的動作沒有觸發預期的錯誤? 我究竟做錯了什么? 還是 SBCL 錯誤? 懷疑我懷疑我應該在方法定義中使用: (lock ...

如何分派超類的方法?

[英]How to dispatch methods of a superclass?

我想裝飾shapely.geometry.Point class 以從dendropy.datamodel.basemodel.AnnotationSet object 實例化它。我選擇了multimethod package 來分派超類的__init__ ,因為它將此方法分派到一個簡單的 cla ...

當我在 AWS Lamba 中使用多方法裝飾器裝飾一個函數時,“'module' 對象不可調用”

[英]"'module' object is not callable" when I decorate a function with the multimethod decorator in AWS Lamba

我遇到了一個問題,當我用多方法裝飾器裝飾一個函數時,lambda 會拋出一個“'module' object is not callable”錯誤。 我創建了一個任意示例來重現這個問題。 如果我刪除裝飾器,它就可以工作。 出於某種原因,我的函數一經修飾就被視為模塊。 我正在使用層來包含多方法,但 ...

基於 Python 中的關鍵字參數名稱的多方法/調度函數

[英]Multimethod / dispatch functions based on keyword argument names in Python

編輯#1:我已經按照建議使用“手動”基於 if/else 的解決方案更新了示例,以證明需要進一步自動化。 在基於關鍵字參數名稱而不是類型選擇目標 function 的情況下,如何有效地調度函數(即實現類似multimethods的功能)? 我的用例是為數據類實現多個工廠方法,這些數據類的字段相互依賴 ...

“ISA”是怎樣的? 基於多方法而不是 instanceof 的語法糖?

[英]How is an “isa?” based multimethod more than syntax sugar for instanceof?

我以clojure 站點為例。 這個功能很酷。 我試圖了解為什么這優於(例如)java 中基於實例的實現的技術原因。 在我看來,在 function 中基本上等同,語法更好。 為什么 multimethods 被認為是基於訪問者模式的雙重調度的一個很好的替代方案,而 instanceof 在它們看 ...

Perl 6 多方法永遠不會匹配預期的簽名

[英]Perl 6 multi methods never match expected signature

我有一個有兩個多方法的類( multi submit )。 我這樣稱呼我的 multi: 哪個被運送到我的班級: 但是我總是得到以下回應: 盡管我的命名參數 ( :message ) 是Str要求的並且@models聲明了默認值。 ...

在不同格式的地圖上調度函數調用

[英]Dispatching function calls on different formats of maps

我正在寫一個agar.io克隆。 我最近看到了很多限制記錄使用的建議(例如here ),所以我試圖僅使用基本地圖來完成整個項目。 * 我最終為不同的“類型”細菌創建了構造函數,例如 “定向細菌”已添加新條目。 :direction條目將用於記住它的前進方向。 問題是 :我 ...

如何繞過打印方法

[英]How to bypass print-method

我有一個帶有很多大地圖和其他東西的應用程序,打印時笨拙,因此我為它們制作了一個自定義打印功能,並設置了print-method來調用它,如下所示: 在fstr1內部,如果確定映射不是需要特殊處理的類型之一,該如何調用普通的打印方法? 這個答案建議在元數據中放置一個:type ,因為 ...

為什么 Perl 6 Str 扮演 Positional 角色,我該如何更改 []?

[英]Why does a Perl 6 Str do the Positional role, and how can I change []?

我正在使用字符串的位置接口。 我知道如何像 Python 在 Perl 6 中那樣對字符串進行切片? ,但我很好奇我是否可以讓這個東西只為咯咯笑而工作。 我想出了這個例子。 閱讀位置很好,但我不知道如何設置multi來處理任務: 最后一個不起作用: 不過,我不認為它會起作用。 我不知道它 ...

Perl 6對象如何找到可能在父類或角色中的多方法?

[英]How does a Perl 6 object find a multi method that might be in a parent class or role?

考慮這個例子,其中子類有一個沒有簽名的multi方法和一個帶有slurpy參數的方法: 方法查找是如何構建的? 我正在尋找一種方法來解釋它,特別是沒有抱怨它。 有一個呼叫Bar的do-it用1的實例。 一些合理的人可能會認為它首先在Bar尋找匹配的簽名,並且該漏洞將永遠不會讓 ...

Java接口上的Clojure Multimethod調度

[英]Clojure Multimethod dispatch on Java interface

假設我有一個Java方法可返回某個父接口的對象。 此函數返回的對象的類未記錄,但是存在豐富且記錄良好的接口層次結構,這些結構都擴展了父接口。 因此,例如: 如果我知道底層對象(並且對底層對象的穩定性有信心),則可以編寫一種多方法來分派該方法返回的各種對象: 但是,由於只有接口 ...

功能在多個調度系統中是否可變?

[英]Are functions mutable in multiple dispatch systems?

我是否正確理解,以(大多數還是某些?)多種調度語言,每個方法都會在程序執行的某個時間點添加到函數中 。 然后我是否可以得出結論,將多個調度作為功能強制功能是可變的? 是否存在多種調度語言,其中所有方法都在加載時(附加功能)一起附加到(泛型)函數,所以不可能在不同的時間點看到處於不同狀 ...

使用跨多個名稱空間定義的Clojure多方法

[英]Using Clojure multimethods defined across multiple namespaces

雖然下面的例子看起來有點奇怪,但這是因為我試圖減少我目前得到的一個相當大的問題。 當他們坐在幾個抽象層后面並且在多個名稱空間中定義了defmulti和相應的defmethods時,我正在努力研究如何調用多方法。 我真的覺得我錯過了一些明顯的東西...... 假設我有以下場景: ...

停止方法調用:after

[英]Stopping the method from calling :after

說我有一個類似下面的代碼設置 現在讓我們說我想將太空飛船移到某個位置,但是燃料計算結果導致飛船上的燃料量為負(即旅行所需的燃料不足)。 那么,有沒有一種方法可以防止:after限定符被調用而不必發信號通知錯誤情況? 如果我不停止通話,該船將被移至新位置,而不會減少任何燃料,這 ...

在不同命名空間中的單獨文件中實現多方法

[英]Implementing a multimethod in separate files in different namespace

我試圖在一個單獨的文件中定義一個多方法及其實現。 它是這樣的:在文件1中 在文件2中 在我調用方法的主文件中,我定義了這樣的東西: 當我這樣做時,我得到一個異常,說"No method in multimethod 'foo'for dispatch value: he ...

Clojure mutimethods按類型發送

[英]Clojure mutimethods for dispatch by type

我在clojure中實現了快速功率算法: 現在我想玩類型提示和java互操作。 我想這樣做是因為在clojure中更好地理解所有這些“java東西”。 它看起來很容易,但實際上存在很多隱藏的障礙。 所以,我寫道: 當然,由於錯誤的arity問題,它甚至沒有編譯。 所以我谷 ...

Nim - 創建實現方法的對象序列

[英]Nim - Create sequence of objects which implement a method

我想編寫一個游戲,並想為多個實體使用一個組件模式。 在具有接口/類型類/多重繼承的語言中,沒有問題。 我希望某些實體可更新但不可渲染,而有些則兩者兼而有之。 哈斯克爾: 我可以創建一個可以更新的事物列表。 在 Java/D/... 這可以通過接口實現 現在我想知道如何使用多方法 ...


 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM