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

95
Почему C ++ не допускает унаследованную дружбу?

Почему дружба по крайней мере необязательно наследуется в C ++? Я понимаю, что транзитивность и рефлексивность запрещены по очевидным причинам (я говорю это только для того, чтобы избежать простых ответов на часто задаваемые вопросы), но отсутствие чего-то в этом роде virtual friend class Foo;меня...

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

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

94
реализация вывода типа

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

91
Есть ли на каком-либо другом языке, кроме JavaScript, разница между начальными местоположениями скобок (та же строка и следующая строка)?

Сегодня, когда я случайно читал книгу О'Рейли по шаблонам JavaScript, я обнаружил одну интересную вещь (стр. 27 для справки). В Javascript в некоторых случаях есть разница, если место начала фигурной скобки отличается. function test_function1() { return { name: 'rajat' }; } var obj =...

90
Зачем создавать язык с уникальными анонимными типами?

Это то, что меня всегда беспокоило как особенность лямбда-выражений C ++: тип лямбда-выражения C ++ уникален и анонимен, я просто не могу его записать. Даже если я создам две лямбда-выражения, которые синтаксически совершенно одинаковы, результирующие типы определены как разные. Следствием этого...

90
Каковы точки строгости Haskell?

Все мы знаем (или должны знать), что Haskell по умолчанию ленив. Ничего не оценивается до тех пор, пока не будет оценено. Итак, когда нужно что-то оценивать? Есть моменты, в которых Haskell должен быть строгим. Я называю это «точками строгости», хотя этот конкретный термин не так широко...

90
Почему последняя часть имени метода Objective-C должна принимать аргумент (если их больше одной части)?

В Objective-C вы не можете объявлять имена методов, если последний компонент не принимает аргумент. Например, следующее недопустимо. -(void)take:(id)theMoney andRun; -(void)take:(id)yourMedicine andDontComplain; Почему Objective-C был разработан таким образом? Был ли это просто артефакт Smalltalk,...

87
Невозможно установить атрибуты для экземпляра класса «объект»

Итак, я играл с Python, отвечая на этот вопрос , и обнаружил, что это неверно: o = object() o.attr = 'hello' из-за файла AttributeError: 'object' object has no attribute 'attr'. Однако для любого класса, унаследованного от объекта, это действительно так: class Sub(object): pass s = Sub() s.attr =...

87
Почему шаблон функции не может быть частично специализированным?

Я знаю, что спецификация языка запрещает частичную специализацию шаблона функции. Хотелось бы узнать, почему он это запрещает? Разве они не полезны? template<typename T, typename U> void f() {} //allowed! template<> void f<int, char>() {} //allowed! template<typename T>...

84
Почему в Java возникает ошибка компилятора «недостижимый оператор»?

Я часто обнаруживаю, что при отладке программы удобно (хотя, возможно, и плохая практика) вставлять оператор возврата внутри блока кода. Я мог бы попробовать что-то подобное на Java .... class Test { public static void main(String args[]) { System.out.println("hello world"); return;...

80
Почему ваш тип данных оператора переключения не может быть длинным, Java?

Вот отрывок из руководств Sun по Java : Коммутатор работает с byte, short, charи intпримитивными типами данных. Она также работает с перечисленными типами (обсуждавшихся в классах и наследовании) и несколько специальных классов, «завернуть» некоторые примитивные типы: Character, Byte, Short, и...