问题标签 [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.
class - Eiffel 中的类属性
我正在尝试在 Eiffel 中创建一个由一些属性和函数组成的类。我不断遇到属性对 setName 不可见或未正确初始化的问题。编译器错误是:VEVI:变量设置不正确。属性:名称。我希望能够在 APPLICATION 中实例化 TESTER 对象并调用这些方法。
null - Eiffel 是否避免所有空值?
我实际上正在使用 C# - 但是 Nulls 的问题出现在本地开发人员团体(英国 Chester Devs)社交网站上,关于 nulls 的问题
对象 Person 具有 String 类型的属性,例如 Name,如果名称未知,则在 C# 中 Name 为 null
Eiffel 是否有比 C#(如果 x 为 null ...)更好的方法来处理这种常见的动态 void ?
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
design-by-contract - 埃菲尔:附加检查到要求语句中的未知标识符
为什么我这里有一个未知的标识符和 l_i??!!!
c++ - 空基础优化子对象的地址
假设我有一个值:
并且有资格进行空基优化的空类:
是否合法:
eiffel - Eiffel:错误:变量设置不正确。在 make 调用 default_create 或任何父调用/重新定义 default_create
不确定,但它使我Error: variable is not properly set.
在创建过程中得到了不同的调用顺序。我发现在调用之前创建类属性default_create
似乎可以解决问题。为什么呢?似乎 default_create 没有在我的 make 例程中调用某些东西??!!!
尝试做一个例子,即使我认为我不能用一个简单的例子来重现它......
在职的
错误:变量设置不正确。
eiffel - Eiffel:void safety,一种简洁的方法来测试一个对象是否存在,然后调用它的特征
我想知道是否有更清晰的声明
作为
会重复foo.bark
,显然我想避免它......甚至最后一条语句也不会使用 void-safety 编译,因为 foo on else 可能是无效的......
javascript - 可以在 TS 中将 undefined 强制转换为 void 吗?
TLDR;
这个可以吗?或者这是不好的做法?
语境
在 TypeScript 中,我有一个函数可以返回 something 或undefined
or void
。
诸如可以返回修改后的有效负载的事件处理程序之类的东西,或者开发人员可以选择不返回任何内容或未定义,以防他们不会修改有效负载:
然后我有一个类型检查器,它需要检查它是否返回除了 void 或 undefined 以外的东西:
但是,上面的代码片段是否会出现错误,因为它说即使result !== undefined
它仍然可以void
?
在我看来,我认为这很奇怪,因为void
应该与undefined
.
所以我做了这个类型检查器来解决它:
这解决了我的问题,但我的问题是:
这个可以吗?或者这是不好的做法?