问题标签 [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 回答
375 浏览

compilation - EiffelStudio,项目只读:无法编译

我正在与我在埃菲尔的大学做一个共享项目。我刚刚下载了这个项目,我遇到了这个问题:

我们必须处理 a NameProject_as_library.ecf,所以我们必须处理 as_library 类型。问题就在这里,它无法编译,因为会弹出一条带有written 的弹出消息Read-only project: cannot compile

我尝试在 EiffelStudio 中搜索此问题的任何选项,并Library readonly = true/false在项目 - > 项目设置中找到了该选项。它设置为真,所以我打开了假,没有任何改变。

任何人都可以帮助我吗?

0 投票
7 回答
1077 浏览

oop - 关于纯 OO 的各种问题(在没有 ide 的情况下进行设置;教程;相关书籍)

一段时间以来,我一直想学习一种纯 OO 语言,但我被他们似乎都需要 IDE 并且我找不到任何不在视频中的好教程的事实推迟了格式。

我很高兴以后使用 IDE ,但我不想通过一个来学习语言。我正在寻找的是一个简单的控制台解释器或命令行编译器,例如 gcc、ghc、ghci 和 python IDLE(是的,它是一个 IDE,但它是如此的简约以至于它可能只是一个命令行解释器)。我发现当我不尝试同时使用 IDE 时,我可以更快、更好、更全面地学习一门语言。所以请不要告诉我吱吱声是唯一的方法:P

我也在寻找以文本而不是视觉呈现的教程。再一次,当我可以盯着一个页面并一遍又一遍地阅读某人的句子时,我学得更快,而不必暂停视频,将其退回 10 秒,按播放,一遍又一遍,然后再次。

我对具有不同程度的 OO 纯度的各种语言感兴趣,我计划在某个时候学习它们。任何 smalltalk 方言都让我感兴趣,Self(一个极端的面向原型的 smalltalk 版本(非常有趣,越激进越好 imo)),strongtalk,vanilla smalltalk(或一些你能得到的尽可能 vanilla 的实现)。

我也对 Eiffel 感兴趣,我看到的代码片段让它看起来非常优雅,而且我读到它实际上非常创新(引入了代码合同和其他类似的东西)。但是,我会优先选择来自 smalltalk 阵营的语言,而不是来自 Eiffel 方面的语言,因为从表面上看,Eiffel 似乎是 OO 和命令式编程之间的混合体。同样,我宁愿避免使用 Scala(混合 OO 和函数式)和其他混合语言。所以没有 C#、Java、C++、D、python 等等等等。我不是因为我认为它们很糟糕而拒绝这些语言,只是我开始学习纯 OO 而这些语言是混合 OO:不是真的是我要找的。

另外,有没有人可以推荐一下官方书籍?对于 smalltalk,有“蓝皮书”又名“Smalltalk-80:语言及其实现”。对于埃菲尔来说,有“埃菲尔:语言”。我之所以这么问,是因为根据我的经验,您可以通过阅读该语言作者所写的书籍(参见 K&R the C 编程语言)以及通过阅读一般书籍来学到很多东西。

所以是的,我的问题是:从什么纯 OO 语言开始比较好?我如何在不使用 IDE 的情况下学习它?语言作者是否有相关书籍?

0 投票
1 回答
367 浏览

c++ - 埃菲尔在 C++ 构造函数上“创建”?

C++ 的构造函数和 Eiffels 创建过程声明有什么区别?

一个类可以有多个构造函数有什么价值?或者埃菲尔“创造”还有其他好处吗?

谢谢

0 投票
1 回答
116 浏览

keyword - 这种区分大小写的真正含义是什么?

我们都知道有一些区分大小写的语言,以及不区分大小写的语言。根据我找到的详细信息,Eiffel 是不区分大小写的。如果一种语言不区分大小写,这意味着它的关键字也不区分大小写,对吧?但是,在埃菲尔,有一个小问题。请查看以下链接

http://docs.eiffel.com/book/method/eiffel-language-reserved-words#False

上面的链接包含 Eiffel 关键字列表。通常,如果一种语言不区分大小写,则所有关键字在其网站中都以小写或大写形式列出。但是,在上面的链接中,1.12、1.23 等中的关键字是有大小写的。这意味着,关键字“True”、“False”、“TUPLE”、“Void”等同时具有小写和大写字母。

那么,这是否意味着 Eiffel关键字区分大小写?如果答案是否定的,那么为什么会以这样的方式列出它们呢?

0 投票
1 回答
180 浏览

agent - 从内联代理访问局部变量

我正在尝试实现dos_key_exist,我认为下面的代码可以做到。但我得到一个编译错误 key not found 行:Result := not (x.key = key)

定义:

0 投票
1 回答
261 浏览

eiffel - 为什么在常量赋值中使用等号?

我有一个关于埃菲尔常数的问题。嗯,这只是一个语义问题,但它已经困扰我一段时间了,我只是不明白这个专业的概念。

对于您使用的正常作业,:=这在数学思维中完全有意义,因为它是作业的数学符号

但是如果我们看一下常量的定义:

我只是不明白为什么我们在那里使用等号。有一定的原因吗?我会这样理解:我们将值 5 分配给常量,但为什么是布尔表达式?

我希望有人可以解释这背后的概念

0 投票
2 回答
195 浏览

compiler-construction - 库源中 Eiffel/循环定义中原始类型的实现

我是 Eiffel 的新手,我试图了解“原始”类型(例如,INTEGER_32、REAL_64 等)是如何实现的。我对 EIFFEL 库类源文件中看似循环的依赖感到困惑。

原始类型被实现为非扩展父类的“扩展”版本。例如,INTEGER_32 是 INTEGER_REF_32 的扩展子代。(请注意,“扩展”并不意味着“实例”。扩展类是一个类,而不是一个对象。)

INTEGER_REF_32包含一个扩展 INTEGER_32 的实例。在 INTEGER_REF_32 对象中的某处必须有一个扩展整数是有道理的,但这意味着父级包含其子级的实例。

当您查看功能的定义时,它会变得更加混乱:

在 INTEGER_32 中,名为“as_integer_64”的特征/方法被简单地重新定义为“Result := Precurser”,其中 Precurser 意味着使用父级的特征。在父代 INTEGER_REF_32 中,“as_integer_64”被定义为“Result := item.as_integer_64”,其中“item”是展开后的 INTEGER_32!换句话说,孩子调用其父母的特征,父母调用孩子的特征。我也很困惑为什么扩展版本用看似等效的定义来明确重新定义“as_integer_64”。

我希望看到原始类型的实现细节终止,并表明某些特性是内部定义的。相反,我发现了这些循环定义。显然,编译器对原始类型的了解比源文本文件中出现的更多。当编译器看到它知道的原始类型时,编译器是否会忽略源文本,或者 Precurser 在这种情况下具有不同的含义?重新定义是对编译器的某种暗示,还是让解析器满意的东西?

0 投票
3 回答
983 浏览

web-applications - 你如何在 Eiffel 开发 webapps?

您如何在 Eiffel 开发 Web 应用程序?

有没有适用于埃菲尔的 webapp 框架?

是否有使用 eiffel 开发的 Web 应用程序的示例?

0 投票
4 回答
445 浏览

oop - 为什么 Eiffel 的自动类型转换功能没有更受欢迎?

我在用 Java 编程时发生了什么:

但后来我想到了一种“自动类型转换”的可能性,它只使用我定义的转换函数fooFrom,每次传入一个字符串,其中一个 Foo 对象除外。

我的搜索把我带到了关于类型转换的维基百科页面,这个 Eiffel 示例:

convert如果将 STRING_8 用作 SYSTEM_STRING,则会自动调用后面的方法,反之亦然。令我惊讶的是,我找不到任何其他语言支持这一点。

所以我的问题是:还有其他语言支持这个功能吗?如果没有,是否有任何理由,因为它对我来说似乎很有用?此外,我认为将其作为语言插件实现并不难。

0 投票
1 回答
151 浏览

eiffel - 使用 Eiffel 的可用处理器数量

我在玩 Eiffels SCOOP。

在我的程序中,一群工人并行运行。我想创建尽可能多的工人,因为处理器可供我使用。

埃菲尔是否有“简单”的方法来查找可用处理器的数量?