问题标签 [void-safety]

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 回答
445 浏览

class - Eiffel 中的类属性

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

0 投票
1 回答
329 浏览

null - Eiffel 是否避免所有空值?

我实际上正在使用 C# - 但是 Nulls 的问题出现在本地开发人员团体(英国 Chester Devs)社交网站上,关于 nulls 的问题

对象 Person 具有 String 类型的属性,例如 Name,如果名称未知,则在 C# 中 Name 为 null

Eiffel 是否有比 C#(如果 x 为 null ...)更好的方法来处理这种常见的动态 void ?

0 投票
1 回答
814 浏览

void - Eiffel 附加语句中的局部变量有什么意义?

在 Eiffel 中,Void Safety 是一种静态防止取消引用未初始化(“null”)对象的方法。它的工作方式是,首先,必须将对象声明为detachable,然后您需要在 if 块中检查该对象是否实际附加(即具有某些值),然后才能使用它。

这就是我到目前为止一直在使用它的方式:

工作得很好:没有附加检查,编译失败并出现“Object_call 的目标可能无效”错误。然而,在实际阅读了关于 Void Safety 的文档之后,我了解到这实际上是它应该看起来的样子:

在这种形式中,是if 块的局部l_some_object变量,它指向与相同的对象,但静态保证为非 void。some_object

但是,我看不出这个 as-clause 存在的原因。正如我上面所指出的,显然原件some_object已经在 if 块中静态保证是非空的,那么引入另一个变量有什么意义呢?

除了范围之外,some_object和之间有什么区别?l_some_object

0 投票
1 回答
315 浏览

eiffel - Eiffel:编译错误`分配源与目标不兼容`

在编译器中设置了完整的 void 检查后,我在以下情况下出现了一个变量未正确设置编译错误,这对我来说是正确的(在我看来)。它说分配的来源与目标不兼容。我在这里想念什么???( DB_SERVICE.load_from_primary_key...)

在此处输入图像描述

类 DB_SERVICE

COMPANY_SERVICE 类

类公司

0 投票
1 回答
103 浏览

design-by-contract - 埃菲尔:附加检查到要求语句中的未知标识符

为什么我这里有一个未知的标识符和 l_i??!!!

0 投票
1 回答
78 浏览

c++ - 空基础优化子对象的地址

假设我有一个值:

并且有资格进行空基优化的空类:

是否合法:

0 投票
1 回答
153 浏览

eiffel - Eiffel:错误:变量设置不正确。在 make 调用 default_create 或任何父调用/重新定义 default_create

不确定,但它使我Error: variable is not properly set.在创建过程中得到了不同的调用顺序。我发现在调用之前创建类属性default_create似乎可以解决问题。为什么呢?似乎 default_create 没有在我的 make 例程中调用某些东西??!!!

尝试做一个例子,即使我认为我不能用一个简单的例子来重现它......

在职的

错误:变量设置不正确。

0 投票
1 回答
97 浏览

eiffel - Eiffel:void safety,一种简洁的方法来测试一个对象是否存在,然后调用它的特征

我想知道是否有更清晰的声明

作为

会重复foo.bark,显然我想避免它......甚至最后一条语句也不会使用 void-safety 编译,因为 foo on else 可能是无效的......

0 投票
1 回答
56 浏览

eiffel - 重命名为继承人后未正确设置变量

我知道如何修复它(请参阅我的解决方案@bottom),但不明白为什么会发生此编译错误,因为在我看来,重命名的属性应该由 Precursor 创建到 default_create 中。为什么不是这样?

NRJ_ENTITY

NRJ_CONSUMER

NRJ_GENERATOR

NRJ_GENERATOR_CONSUMER

结尾

错误截图

在此处输入图像描述

修复 NRJ_GENERATOR_CONSUMER

0 投票
2 回答
547 浏览

javascript - 可以在 TS 中将 undefined 强制转换为 void 吗?

TLDR;

这个可以吗?或者这是不好的做法?

语境

在 TypeScript 中,我有一个函数可以返回 something 或undefinedor void

诸如可以返回修改后的有效负载的事件处理程序之类的东西,或者开发人员可以选择不返回任何内容或未定义,以防他们不会修改有效负载:

然后我有一个类型检查器,它需要检查它是否返回除了 void 或 undefined 以外的东西:

但是,上面的代码片段是否会出现错误,因为它说即使result !== undefined它仍然可以void

在我看来,我认为这很奇怪,因为void应该与undefined.

所以我做了这个类型检查器来解决它:

这解决了我的问题,但我的问题是:

这个可以吗?或者这是不好的做法?