问题标签 [eiffel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
426 浏览

design-patterns - 访客模式和复合模式

我试图开发一种方法来构造算术和逻辑表达式,并对它们执行操作。对于结构,我使用复合模式,对于操作,我使用访问者模式。

我对具体访问者类的实现有点困惑。

这是我目前的做法:

我的附加课:

现在对于访问者模式,这是一个应该评估给定表达式的具体访问者(我还想要一个进行类型检查、漂亮打印等的具体访问者)。

我的问题是,在我的每个结构(加法、减法、否定等)中都有评估方法是否违背了访问者模式的目的,因为所有评估都应该在访问者类中完成?那么如何在访问者类中实现它呢?我在想我可以做类似的事情:

但是我的结构中必须有许多接受方法,对于算术表达式,它必须返回 INTEGER,对于逻辑运算,它必须返回 BOOLEAN。

0 投票
1 回答
100 浏览

c++ - “无法存储编辑器布局信息。” 在埃菲尔工作室

我没有真正的编程问题,但更像是 IDE 问题。我的 Eiffel Studio 15.01 无法启动,因为链接中的图片显示了这个错误。 http://imgur.com/kiKJyez

有人可以帮忙吗?

0 投票
2 回答
114 浏览

polymorphism - 埃菲尔的多重继承复制

我正在努力理解多重继承与复制和多态性的相互作用。请考虑以下形成经典菱形图案的类。

如果我将 D 的实例附加到ob_as_cC 类型的对象,ob_as_c.c则按预期打印“c”。但是,如果将实例附加到ob_as_b类型 B 的对象上,则ob_as_b.b打印也会打印“c”。

这是预期的行为吗?显然,我想ob_as_b.b打印“b”。

0 投票
1 回答
445 浏览

class - Eiffel 中的类属性

我正在尝试在 Eiffel 中创建一个由一些属性和函数组成的类。我不断遇到属性对 setName 不可见或未正确初始化的问题。编译器错误是:VEVI:变量设置不正确。属性:名称。我希望能够在 APPLICATION 中实例化 TESTER 对象并调用这些方法。

0 投票
1 回答
2050 浏览

arrays - 如何在 Eiffel 中的数组中添加和删除对象

我正在尝试创建一个维护 CRITTER 对象数组的 CONTAINER 类(我已经创建并测试了它。请注意,有各种 CRITTER 亚种,它们继承自 CRITTER 超类)。目的是从这个数组中添加和删除 CRITTER 对象。这是 CONTAINER 类的样子:

两个问题:首先,我可以在 APPLICATION 中实例化 CONTAINER 类,但是当我调用

我在第二行得到一个先决条件,无效索引违规错误。这可能是因为我没有设置数组的上限和下限。但是,当我尝试这样做时,会出现语法错误。解决这个问题的方法是什么?

其次,为了从数组中删除一个对象,如果我能掌握索引值会有所帮助,但我看不到任何这样做的函数,除非我遗漏了一些东西。

0 投票
1 回答
147 浏览

algorithm - 编码空间删除时如何摆脱最后一个空格

这是我的空间删除任务的艾菲尔代码:

这是示例输入:

我运行了代码,得到的输出与要求略有不同,比如说,当行中有尾空格时,我总是得到一个额外的空格。

这是我的输出:

有人可以帮我吗?

0 投票
1 回答
1146 浏览

compiler-errors - Eiffel C 编译器错误

我正在使用 Effiel studio 进行编码,我注意到在菜单下方的 ErrorList 中有一条错误消息显示:“错误代码:C 编译器错误

错误:外部 C/C++ 编译失败。怎么做:查看外部 C/C++ 编译以了解详细信息。”

有谁擅长 Eiffel 知道这意味着什么以及如何调试它?

0 投票
1 回答
72 浏览

algorithm - 如何使单词在偶数位置大写?

这是我的 eiffel 程序,它基本上是在执行空格删除(删除给定文本文件中的冗余空格)以遵循正则表达式:A+(SA+)*EOL,其中对于文件中的每一行,它必须以字母开头,并且字母之间只有一个空格。

我的问题是,基于这个程序,我如何扩展它以使每个其他单词都变成大写?即第 2、第 4、第 6 等。

0 投票
2 回答
166 浏览

object - 创建动态对象 (Eiffel)

我必须找到一种动态创建对象的方法,这意味着用户可以决定程序启动后要创建多少个对象。我试图做的是:

一旦用户选择了玩家的数量,变量计数就会更新并且创建对象的特征会被调用。

我使用了这种蛮力方法,而不是循环,因为我需要对象的“名称”,我必须在程序中再次调用它们。

无论如何,编译器给了我一个 VEVI 错误,变量设置不正确。一些帮助?

0 投票
2 回答
130 浏览

eiffel - 埃菲尔算法:第一个重复字符

我正在埃菲尔为学校实验室编程,其中一项任务是在给定算法中找到错误。该算法返回第一个重复的字符。

该算法的工作原理如下:

我花了最后几个小时试图找到其中的错误,但它总是通过所有测试。

任何帮助将非常感激。谢谢。