簡體   English   中英

Eiffel:如何獲取過程的特定操作數的類型

[英]Eiffel: how do I get the type of a particular operand of a procedure

正如我在調試器中看到的那樣,可以獲取操作數和過程名稱,有沒有辦法獲取它?

  • PROCEDURE => operands返回一個可分離的對象,似乎僅在將它們設置到代理中時才返回它們
  • 我是否通過了REFLECTOR類,因為PROCEDURE類沒有此功能,在這種情況下為什么?

在此處輸入圖片說明

似乎estudio可以像ROUTINE客戶端那樣訪問信息,為什么他是特權用戶? 他在作弊嗎?

以下代碼演示了如何檢索有關例程對象的開放參數類型的信息:

        p: ROUTINE -- Routine object.
        t: TYPE [detachable ANY] -- Current open argument type.
    do
        p := agent (i: INTEGER; s: STRING)
            do
            end
        across
            1 |..| p.open_count as i
        loop
            t := p.generating_type.generic_parameter_type (1).generic_parameter_type (i.item)
            io.put_string (t.name)
            io.put_new_line
        end

對我來說,上面的代碼可以打印

INTEGER_32
!STRING_8

評論:

  1. p.open_count給出打開參數的總數。
  2. p.generating_type檢索例程對象的類型。
  3. p.generating_type.generic_parameter_type (1)檢索打開參數元組對象的類型。
  4. 到最后調用generating_type檢索與指數開參數的類型i.item

暫無
暫無

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

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