簡體   English   中英

Anylogic:聲明類型為 ArrayList 的參數

[英]Anylogic: Declare parameter of type ArrayList

我正在構建一個 class (對不起 - 代理),它將與一組坦克對象(流體庫)一起工作 - 做一些事情,比如監控所有坦克的單個水平或總水平,報告水平並根據水平啟動行動 - 事情那種性質。 為了論證的緣故,我們稱它為“TankMonitor”代理。
理想情況下,我希望能夠在我的“TankMonitor”代理中定義一個參數,當我將 TankMonitor 放置在 main 中時,它允許我定義感興趣的坦克。 我試圖將參數的類型定義為 Other - ArrayList<Tank>但是我不知道如何設置下一步,以便在我將這個代理的實例放入 main 時填充 Tanks 的 ArrayList。 我的偏好是有一個列表類型控件來填充 ArrayList - 就像 AnyLogic Seize 塊允許您指定多個資源池以供選擇一樣。

以前有沒有人嘗試過並且成功了?

這是可能的,如下所示:

  1. 將類型更改為“Other”,然后更改為“Tank[]”,即坦克數組
  2. 將控件類型更改為“一維數組”

下面的例子。 現在,您可以在設計時為您的代理實例預定義儲罐。

在此處輸入圖像描述

除了本傑明的完美答案之外,我只需添加手動解決方法,這里不需要,但當相關參數的結構比預制控件所涵蓋的更復雜時會很有用,比如列表列表, map 或類似產品。

在這種情況下,控件類型仍然是文本,並且通過將其指向參數類型的新 object 來填充它。 例如,對於ArrayList<Tank>參數,您可以實例化一個新的 ArrayList object,您可以使用如下對象列表填充它: new ArrayList<Tank>(Arrays.asList(tankA, tankB))

在 Java 代碼中,寫入該文本框中的任何內容都將在嵌入式代理實例的自動生成參數設置 function 中的參數分配語句的右側結束。 因此,多語句代碼在這個地方不起作用。 相反,如果構建參數值的過程不能完全適合單個表達式,您可以將代碼隱藏在 function 中,它返回所需的 object,並從參數的文本框中調用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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