我不明白为什么会有2种generating_type
类型,一种带有感叹号,而另一种则没有。
我有一个函数,该函数从DB_SERVICE[G]
的集合的给定实例中返回db_services
,以便可以从另一个服务中检索并调用它。当我将实例generating_type
传递给该函数时,conforms_to
返回True,就像当我给出({ENUMERATE}).generating_type
时一样。
为什么会这样?
-- Humanly unreadable
if attached {ENUMERATE_DB_SERVICE} {SIT_ENVIRONMENT}.app_instance.db_service_from_entity_type (item_prototype.charge_unit_relationship.secondary_prototype.an_index_relationship.secondary_prototype.generating_type) as l_enum_dbs then
-- Humanly readable but not working
if attached {ENUMERATE_DB_SERVICE} {SIT_ENVIRONMENT}.app_instance.db_service_from_entity_type (({ENUMERATE}).generating_type) as l_enum_dbs then
我的功能
db_service_from_entity_type (an_entity_type: TYPE[detachable DB_ENTITY]): detachable like db_services.item
do
across
db_services as l_dbs
until
Result /= Void
loop
if l_dbs.item.item_prototype.generating_type.conforms_to (an_entity_type) then
Result := l_dbs.item
end
end
ensure
service_found: attached Result
end
如屏幕截图所示,用{ENUMERATE}
代替({ENUMERATE}).generating_type
也不起作用
答案 0 :(得分:1)
generating_type
返回对象的动态类型。因此,({ENUMERATE}).generating_type
产生TYPE [!TYPE [!ENUMERATE]]
。但是您只需要TYPE [ENUMERATE]
。这可以通过删除对generating_type
的调用并使用类型为{detachable ENUMERATE}
的可分离版本来实现。
相应的对象测试看起来像
if attached {ENUMERATE_DB_SERVICE} {SIT_ENVIRONMENT}.app_instance.db_service_from_entity_type
({detachable ENUMERATE}) as l_enum_dbs then