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

c++ - 如何将大量本机代码转换为可扩展的服务?

您好,我在 Eiffel 开发了一大块软件。可以在 C++ 中使用此代码,但它会加载 Eiffel 运行时,并且当由 C++ 中的多个线程访问时,我不能相信 Eiffel 代码和运行时是线程安全的

我需要将此本机代码转换为服务,但我想在高负载的情况下扩展到多台服务器。我不想将扩展方面委托给 Eiffel 代码和运行时,因此我正在研究使用现有的可扩展性选项包装此代码。

Apache Web 服务器下是否有任何东西可以让我提供对这段代码的线程安全访问?埃菲尔代码实例池怎么样?我的想法是这样的:

[大量客户端请求通过网络] ---> [一些可扩展的框架] --> [一个或多个创建 Eiffel 代码的昂贵实例]

我希望该框架能够让我包装多个昂贵代码块的实例,并且我希望通过添加更多机器来像网络农场一样扩展它。

最好的祝福

塞雷夫

0 投票
2 回答
701 浏览

regex - 埃菲尔正则表达式验证

如何为某个字符串创建正则表达式?你可以在断言(代码的前置条件部分)中做到这一点吗?

我一直在谷歌搜索,但没有得到任何令人信服的东西。

问题是这样的:

向 DEPARTMENT(我们正在处理的类)创建过程添加一个前提条件,以确保电话号码有效。有三种可能的有效电话号码格式。有效的电话号码包括以下之一:

  • 八位数字,其中第一位非零
  • 一个前导零,一个非零数字区号,然后是八位数字,其中第一个非零
  • 前导“+”,后跟两位国家代码,然后是单个非零数字地区代码,然后是八位数字,其中第一个非零

验证电话号码时,将忽略任何嵌入的空格。

作为解决此问题的一部分,将 PHONE_NUMBER 类添加到系统是可以接受的,但不是必需的。

0 投票
3 回答
1483 浏览

scheme - How does Racket Scheme's "design by contract" features different from Eiffel?

I know that both Eiffel (the progenitor) and Racket both to implement "Design by Contract" features. Sadly, I am not sure how one would different from the other. Eiffel's DBC is reliant on the OOP paradigm and inheritance, but how would Racket, a very different language account for such a disparity?

0 投票
1 回答
3179 浏览

eiffel - 如何在 Eiffel 中初始化对象数组?

我正在尝试使用 Eiffel 实现生产者-消费者问题的解决方案。我有一个 PRODUCER 类的数组 p 和一个 CONSUMER 类的数组 c 声明和初始化如下:

但是,当我尝试访问数组的其中一个组件(如 p.at(i).somefeature())中的功能时,它会给出一个运行时异常,说“对 void 目标的功能调用”。

关于如何解决这个问题的任何想法?是因为我没有为数组的各个组件调用创建过程吗?或者创建数组的方法是否存在基本缺陷?谢谢。

我认为问题的发生是因为作为引用类型的数组的各个组件(在本例中为生产者或消费者)被初始化为 void。建议的解决方案是使用 make_filled(default_value:T;low,high:INTEGER;),其中 T 是复杂类型。字符串数组的示例为 string_list:ARRAY[STRING] string_list.make_filled(" ",low,high) 导致 string_list 的每个元素被初始化为一个空白字符串。有关如何为类 PRODUCER 提供默认值的任何帮助?谢谢

我想我找到了解决问题的办法。我只需要创建一个 PRODUCER 和 CONSUMER 的实例,并在 make_filled 中使用它们的默认值。然后我可以操纵 p[i] 和 c[i]。

这不是一个超级有效的方法,所以如果有更好的解决方案,请分享。谢谢。

0 投票
1 回答
278 浏览

c# - 埃菲尔的克隆和相等方法

为什么在 Eiffel 中定义cloneorequal方法与 C# 中的类似方法相比,对类型问题提供了更大的保护?

0 投票
1 回答
153 浏览

assertions - 埃菲尔重定义函数可以定义自己的断言吗?

我需要知道 Eiffel 中重新定义的函数是否可以定义自己的断言。

0 投票
1 回答
156 浏览

.net - 在调用例程之后和之前在哪里评估不变量?

在契约式设计中,类不变量必须在两种情况下得到满足:创建对象后和调用例程后。是否有任何示例或条件,我也必须在调用例程之前进行评估?

0 投票
1 回答
421 浏览

import - 埃菲尔文本中的“使用”或“导入”子句

是否有包含/使用/导入其他类的条款,或者这可能是 EiffelStudio 中的添加库部分?如果是这样,您将如何在基于文本编辑器的环境中执行此操作?

0 投票
8 回答
6922 浏览

java - 有没有一种漂亮的方法来断言 Java 方法中的前置条件?

我的许多函数在声明下方都有大量验证代码:

我想精确指定某些输入的有效范围 - 例如 A > B、C => 1 或 str_d.length() > 0。

鉴于我的一些函数有很多必须验证的参数,我最终可以编写很多样板来验证前置条件。我正在编写一个主要供非技术开发人员使用的库,我们发现验证函数输入是帮助用户正确操作 API 的最佳方式。我们越早提出错误,客户要做的工作就越少。

有没有更优雅的方法来指定我的方法中的前置条件、后置条件(可能还有不变条件)。

一位同事告诉我 Eiffel 编程语言的一个特性,它允许以非常自然的方式描述前/后/不变条件,而无需重复大量样板代码。Java 语言是否有一个附加组件可以让我使用其中的一些魔法?

0 投票
3 回答
1504 浏览

variables - 如何在 Eiffel 的声明中初始化局部变量?

我试图这样做:

像这样的东西:

显然两者都不起作用,但我需要在声明中初始化一个变量,因为如果执行重试指令,我不希望变量重新初始化。我查看了 Eiffel 的官方文档和教程,但它们总是在操作体中初始化变量。