Вопросы с тегом «language-design»

143
Почему переменные не объявлены в «try» в области видимости в «catch» или «finally»?

В C # и Java (а также, возможно, в других языках) переменные, объявленные в блоке «try», не попадают в область видимости соответствующих блоков «catch» или «finally». Например, следующий код не компилируется: try { String s = "test"; // (more code...) } catch { Console.Out.WriteLine(s); //Java...

141
Почему локальные переменные требуют инициализации, а поля - нет?

Если я создаю в своем классе bool, что-то вроде того bool check, по умолчанию он имеет значение false. Когда я создаю такой же bool в своем методе bool check(а не в классе), я получаю сообщение об ошибке «использование неназначенной проверки локальной переменной». Зачем?...

141
Почему в Ruby есть как частные, так и защищенные методы?

Прежде чем я прочитал эту статью , я думал, что контроль доступа в Ruby работает следующим образом: public- может быть доступен любой объект (например Obj.new.public_method) protected - можно получить доступ только внутри самого объекта, а также любых подклассов private - то же, что и protected,...

140
Почему оператор switch был разработан с учетом необходимости перерыва?

Учитывая простой оператор switch switch (int) { case 1 : { printf("1\n"); break; } case 2 : { printf("2\n"); } case 3 : { printf("3\n"); } } Отсутствие оператора break в случае 2 означает, что выполнение будет продолжено внутри кода для случая 3. Это не случайно; так оно и было задумано. Почему...

138
Зачем C ++ нужен отдельный заголовочный файл?

Я никогда не понимал, почему C ++ нуждается в отдельном заголовочном файле с теми же функциями, что и в файле .cpp. Это делает создание классов и их рефакторинг очень сложным, а также добавляет ненужные файлы в проект. И тогда возникает проблема с необходимостью включения заголовочных файлов, но с...

136
Почему имена переменных не могут начинаться с цифр?

Некоторое время назад я работал с новым разработчиком C ++, когда он задал вопрос: «Почему имена переменных не могут начинаться с цифр?» Я не мог придумать ответ, за исключением того, что некоторые числа могут содержать текст (123456L, 123456U), и это было бы невозможно, если бы компиляторы думали,...

130
Почему Ruby не поддерживает i ++ или i-- (операторы увеличения / уменьшения)?

Операторы увеличения / уменьшения до / после операции ( ++и --) представляют собой довольно стандартный синтаксис языка программирования (по крайней мере, для процедурных и объектно-ориентированных языков). Почему Руби их не поддерживает? Я понимаю, что вы могли бы сделать то же самое с помощью +=и...

125
Почему оператор String switch не поддерживает нулевой регистр?

Мне просто интересно, почему switchоператор Java 7 не поддерживает nullрегистр, а вместо этого бросает NullPointerException? См. Прокомментированную строку ниже (пример взят из статьи Java Tutorialsswitch ): { String month = null; switch (month) { case "january": monthNumber = 1; break; case...

120
Почему в заголовке указаны встроенные функции C ++?

NB. Это не вопрос о том, как использовать встроенные функции или как они работают, а скорее о том, почему они сделаны такими, какие есть. Объявление функции-члена класса не требует определения функции, поскольку inlineэто только фактическая реализация функции. Например, в заголовочном файле: struct...

118
Соглашения об исключениях или кодах ошибок

Вчера я горячо спорил с коллегой о том, какой метод сообщения об ошибках лучше всего использовать. В основном мы обсуждали использование исключений или кодов ошибок для сообщения об ошибках между уровнями приложения или модулями. Какие правила вы используете, чтобы решить, вызывать ли вы исключения...

115
Почему множественное наследование запрещено в Java или C #?

Я знаю, что в Java и C # множественное наследование запрещено. Во многих книгах прямо говорится, что множественное наследование недопустимо. Но это можно реализовать с помощью интерфейсов. Ничего не обсуждается, почему это запрещено. Кто-нибудь может сказать мне, почему это...

114
Почему скобки конструктора инициализатора объекта C # 3.0 необязательны?

Кажется, что синтаксис инициализатора объекта C # 3.0 позволяет исключить пару круглых скобок открытия / закрытия в конструкторе, когда существует конструктор без параметров. Пример: var x = new XTypeName { PropA = value, PropB = value }; В отличие от: var x = new XTypeName() { PropA = value, PropB...

102
Почему в C # недопустимы параметры const?

Это выглядит странно, особенно для разработчиков на C ++. В C ++ мы обычно отмечали параметр как const, чтобы быть уверенным, что его состояние не будет изменено в методе. Существуют также другие причины, специфичные для C ++, например, передача const refдля передачи по ссылке и уверенности в том,...

101
PHP глобальный в функциях

Какая польза от глобального ключевого слова ? Есть ли причины предпочесть один метод другому? Безопасность? Производительность? Что-нибудь еще? Способ 1: function exempleConcat($str1, $str2) { return $str1.$str2; } Способ 2: function exempleConcat() { global $str1, $str2; return $str1.$str2; }...

98
Нумерация месяцев с отсчетом от нуля [закрыто]

В его нынешнем виде этот вопрос не подходит для нашего формата вопросов и ответов. Мы ожидаем, что ответы будут подтверждены фактами, ссылками или опытом, но этот вопрос, скорее всего, повлечет за собой дебаты, аргументы, опросы или расширенное обсуждение. Если вы считаете, что этот вопрос можно...

97
Вызов метода Java varargs с одним нулевым аргументом?

Если у меня есть Java-метод vararg foo(Object ...arg)и я вызываю foo(null, null), у меня есть оба arg[0]и arg[1]как nulls. Но если я позвоню foo(null), argсамо будет null. Почему это происходит? Как мне называть fooтакое, что foo.length == 1 && foo[0] == nullесть true?...

95
Факторы в R: больше, чем раздражение?

Один из основных типов данных в R - это факторы. По моему опыту, факторы - это в основном боль, и я никогда не использую их. Я всегда конвертирую в персонажей. Странное чувство, будто я чего-то упускаю. Есть ли какие-нибудь важные примеры функций, которые используют факторы в качестве группирующих...