eiffel - 埃菲尔,多种类型一致性:一种指定参数是 A 和 B 的后代的方法?
问题描述
有没有办法(我确定没有运行时检查......)来指定参数或变量通常符合多种类型?避免做一些事情,例如
work (a_printer: PRINTER; a_scanner: SCANNER)
do
a_printer.print
a_scanner.scan
-- OR without second parameter
if attached {SCANNER} a_printer as l_scanner then
l_scanner.scan
else
throw RuntimeError
end
end
解决方案
我认为,如果可能的话,你应该为你的多种类型使用一个共同的祖先。如果你不能(如果你使用库类型),你可以创建后代类(继承MY_PRINTER
自PRINTER
和继承自DEVICE
和)。另一种方法是使用as 类型,但这不是最好的解决方案。MY_SCANNER
SCANNER
DEVICE
ANY
推荐阅读
- android - 使用textview android填写webview表单
- c++ - 如何在调试器中输入命令行输入来编程,以便能够观察每个步骤的输入发生了什么?
- algorithm - 多链接记录作为树的搜索思路
- mysql - Mysql如何授予多个数据库中存在的特定表的权限?
- angular - NativeScript 主题 - 将其设置为灯光模式
- php - 在 PHP 数组中查找相同的键值并将它们保存到具有更新值的输出数组中
- reactjs - 值属性中的模板字符串
- spring - 在 Rest Controller 类中模拟 ResponseEntity
- javascript - 如何将对象的对象组合成单个对象Angular
- jenkins - 首次执行结束后,通过选择 fail_skip xml 执行相同的 Jenkins 作业