Описание тега void-safety

Вопросы о методах времени компиляции, предотвращающих вызовы несуществующих (void, также известных как, null) целей в объектно-ориентированных языках. Это включает использование аннотаций вложений для типов, проблемы с применением правил повторного присоединения и доступа в недействительном коде, проблемы с шаблонами кода, гарантирующими, что определенные выражения присоединяются к существующим объектам во время выполнения.
1 ответ

Eiffel: Ошибка: переменная установлена ​​неправильно. в вызове make default_create или любом родительском вызове / переопределении default_create

Не уверен точно, но это делает разное время, я получил Error: variable is not properly set. в порядке вызова процедур создания. Я понял, что создание атрибутов класса перед вызовом default_create казалось, решил проблему. Почему это так? Не похоже, …
12 янв '19 в 19:40
1 ответ

Адрес пустого базового оптимизированного подобъекта

Допустим, у меня есть значение: int i = 0; И пустой класс, пригодный для оптимизации на пустых базах: struct Empty{ // stuff that passes // static_assert( std::is_empty<Empty>::value ); }; Законно ли это: Empty& e = *reinterpret_cast<Em…
1 ответ

Eiffel: ошибка компиляции `Источник назначения не совместим с целью`

С полной проверкой пустоты, установленной в компиляторе, у меня есть Переменная неправильно установлена ​​ошибка компиляции в следующем случае, что для меня правильно (на мой взгляд). Это говорит о том, что источник назначения не совместим с целью. …
27 сен '18 в 13:43
1 ответ

Какой смысл локальной переменной в присоединенном выражении Эйфеля?

В Eiffel Void Safety - это способ статически предотвратить разыменование неинициализированных ("нулевых") объектов. Это работает так, что сначала объект должен быть объявлен как отделяемый, а затем вам нужно проверить в блоке if, действительно ли об…
06 май '16 в 20:36
1 ответ

Eiffel: безопасность void, краткий способ проверить, существует ли объект, а затем вызвать его функцию

Мне было интересно, если есть более четкое утверждение, то if not attached foo then create foo end if attached foo as l_foo then l_foo.bark end как if not attached foo then create foo foo.bark else foo.bark end будет повторять foo.bark и, очевидно, …
24 янв '19 в 19:12
1 ответ

Атрибуты класса в Eiffel

Я пытаюсь сделать класс в Eiffel, состоящий из нескольких атрибутов и функций. Я продолжаю получать проблемы с атрибутами, которые не видны ни setName, ни неправильно инициализируются. Ошибка компилятора: VEVI: переменная установлена ​​неправильно. …
23 сен '15 в 17:06
1 ответ

Eiffel избегает ВСЕХ нулей?

Я на самом деле использую C# - но вопрос о Nulls возник на локальном сайте группы разработчиков (Chester Devs, UK) о проблемах с нулями У объекта Person есть свойство, скажем, Name, типа String. Если имя неизвестно, то в C# имя равно NULL. Есть ли у…
09 фев '16 в 11:54
1 ответ

Eiffel: неизвестный идентификатор при прикрепленной проверке в требовании

require valid_item: attached item as l_i and then l_i.valid_for_insert or l_i.valid_for_update почему у меня есть неизвестный идентификатор здесь с l_i??!!!
12 окт '18 в 16:38
1 ответ

переменная не установлена ​​должным образом после переименования в наследника

Я знаю, как это исправить (см. Мое решение @bottom), но не понимаю, почему возникает эта ошибка компиляции, так как, на мой взгляд, переименованные атрибуты должны быть созданы Предшественником в default_create. Почему это не так? NRJ_ENTITY inherit…
29 дек '19 в 15:26
2 ответа

Можно ли преобразовать undefined в void в TS?

TL; DR; Это нормально? Или это плохая практика? function isUndefined (payload: any): payload is undefined | void { return payload === undefined } Контекст В TypeScript у меня есть функция, которая может возвращать что-то или undefined или void. Что-…
16 мар '20 в 08:15
2 ответа

Проверка соответствия типа Эйфеля и прикрепления не работает

Попытка решить одно из последствий SCOOP с помощью make_from_separate Я столкнулся с проблемой, когда во время выполнения типы кажутся одинаковыми и не передают attached заявление. non_separate_from_any non_separate_from_any, any_from_separate (v: s…
3 ответа

Результат или исключение

Допустим, у меня есть функция, которая должна возвращать attached Tпо телефону. Однако возвращает detachable T. Если g приводит к Void, я хочу вызвать такое исключение: f: T do if attached g as res then Result := res else raise end end raise do (cre…
22 фев '21 в 22:17
1 ответ

Может ли кто-нибудь объяснить мне, как я могу получить доступ к элементу void*, который находится внутри массива void**, учитывая, что void** принадлежит структуре

#include <stdio.h> #include <stdlib.h> #include <string.h> typedef struct student{ int grade; int enrollCode; }student; typedef struct colVoidStar{ int capacity; int num_itens_curr; void **arr; int current_pos; }colVoidStar; colVo…
1 ответ

Как отобразить два сгенерированных текста ASCII с использованием наследования в консольном приложении на С#

Я пытаюсь сделать проект в отношении отображения двух отдельных текстовых анимаций в одной строке, которые должны отображаться следующим образом. Я использую для этого наследование. Я, однако, не могу отобразить их в одной строке. Мне нужна помощь, …