首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Eiffel中的通用整数转换

Eiffel中的通用整数转换
EN

Stack Overflow用户
提问于 2017-10-27 04:52:26
回答 1查看 169关注 0票数 0

我有一些代码如下:

代码语言:javascript
复制
keys: LINKED_LIST[K]
...
test
local
    tempK:K
    tempI:INTEGER
do
...
across
    keys as cursor
loop
    tempK := cursor.item
    if tempK ~ 1 then
       tempI := tempK
    end
end
...
end

"cursor.item“是"K”的类型。但是,里面的实际值是整数类型。

因此,“如果tempK ~1那么”工作良好。但是"tempI := tempK“不起作用。

如何将tempK的K类型转换为整数?这样它才能编译?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-27 06:08:18

在这种情况下,如果您知道tempK1,那么tempI := 1就可以了。

如果这个想法是在列表中存储的值是INTEGER类型时立即初始化INTEGER,那么有几种方法。一种是使用对象测试:

代码语言:javascript
复制
if attached {INTEGER} tempK as i then
    tempI := i
end

但是,在这种情况下,测试是针对每个元素执行的,即效率低下。在循环之前更改代码以测试列表类型将有帮助:

代码语言:javascript
复制
if attached {LINKED_LIST [INTEGER]} keys as integer_keys then
    ...
    across
        integer_keys as cursor
    loop
        tempI := cursor.item
    end
    ...
end

如果循环中唯一的操作是赋值,则等效的代码仅接受列表的最后一个元素:

代码语言:javascript
复制
...
if not keys.is_empty and then attached {LINKED_LIST [INTEGER]} keys as integer_keys then
    tempI := integer_keys.last
end
...

除了专门化之外,还可以将代码概括为接受将传递密钥的泛型代理,客户端将提供处理密钥的过程。但这可能太多了,取决于你正在解决的任务的目的是什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46967733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档