Запитання з тегом «language-design»

Тег для питань, пов’язаних із дизайном будь-якого аспекту мов програмування.

9
Навіщо розробляти мову з унікальними анонімними типами?
Це те, що мене завжди хвилювало як особливість лямбда-виразів на C ++: Тип лямбда-виразу на C ++ є унікальним та анонімним, я просто не можу записати його. Навіть якщо я створюю дві лямбди, які синтаксично абсолютно однакові, отримані типи визначаються як різні. Наслідком цього є те, що а) лямбди можуть …

4
Чому остання частина імені методу Objective-C повинна приймати аргумент (коли їх більше, ніж одна частина)?
У Objective-C ви не можете оголосити імена методів, коли останній компонент не бере аргумент. Наприклад, наступне є незаконним. -(void)take:(id)theMoney andRun; -(void)take:(id)yourMedicine andDontComplain; Чому Objective-C був розроблений саме таким чином? Це був лише артефакт Смолталка, від якого ніхто не бачив необхідності позбавлятися? Це обмеження має сенс у Smalltalk, оскільки Smalltalk не …

7
Які пункти суворості Хаскелла?
Всі ми знаємо (або повинні знати), що Хаскелл ледачий за замовчуванням. Ніщо не оцінюється, поки не повинно бути оцінено. Тож коли треба щось оцінювати? Є моменти, коли Хаскелл повинен бути суворим. Я називаю це "пунктами суворості", хоча цей конкретний термін не настільки поширений, як я думав. За моїми словами: Зменшення …

4
Чому шаблон функції не може бути частково спеціалізованим?
Я знаю, що специфікація мови забороняє часткову спеціалізацію шаблону функції. Я хотів би знати обгрунтування, чому це забороняє? Вони не корисні? template<typename T, typename U> void f() {} //allowed! template<> void f<int, char>() {} //allowed! template<typename T> void f<char, T>() {} //not allowed! template<typename T> void f<T, int>() {} //not …

7
Неможливо встановити атрибути на екземплярі класу “object”
Отже, я бавився з Python, відповідаючи на це запитання , і виявив, що це невірно: o = object() o.attr = 'hello' завдяки AttributeError: 'object' object has no attribute 'attr'. Однак для будь-якого класу, успадкованого від об'єкта, це дійсно: class Sub(object): pass s = Sub() s.attr = 'hello' Друк s.attrвідображає "привіт", …



6
Чому в стандартних бібліотеках Python немає відсортованих контейнерів?
Чи існує рішення дизайну Python (PEP), яке виключає додавання відсортованого контейнера до Python? ( OrderedDictне є відсортованим контейнером, оскільки він упорядкований за порядком вставки.)

8
Чому Java має помилку компілятора "недосяжний вираз"?
Я часто виявляю, що під час налагодження програми зручно (хоча, можливо, погана практика) вставляти оператор return у блок коду. Я можу спробувати щось подібне на Java .... class Test { public static void main(String args[]) { System.out.println("hello world"); return; System.out.println("i think this line might cause a problem"); } } звичайно, …

4
Чому тип даних оператора перемикання не може бути довгим, Java?
Ось уривок із підручників Java із Sun : Комутатор працює з byte, short, charі intпримітивними типами даних. Вона також працює з перерахованими типами (обговорювалися в класах і успадкування) і кілька спеціальних класів, «загорнути» деякі примітивні типи: Character, Byte, Short, і Integer(обговорюваний в об'єкти Simple Data). Повинна бути поважна причина, чому …

3
що повертає функція php за замовчуванням?
Якщо я нічого не повертаю явно, що саме повертає функція php? function foo() {} Що це за тип? Яке це значення? Як я можу перевірити це саме за допомогою ===? Чи змінилося це з php4 на php5? Чи існує різниця між function foo() {}іfunction foo() { return; } (Я не …

5
Python: Яка різниця між __builtin__ та __builtins__?
Я сьогодні кодував і щось помітив. Якщо я відкрию новий сеанс перекладача (IDLE) і перевірю, що визначено dirфункцією, я отримую це: $ python >>> dir() ['__builtins__', '__doc__', '__name__', '__package__'] >>> dir(__builtins__) ['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BufferError', 'BytesWarning', 'DeprecationWarning', 'EOFError', 'Ellipsis', 'EnvironmentError', 'Exception', 'False', 'FloatingPointError', 'FutureWarning', 'GeneratorExit', 'IOError', 'ImportError', 'ImportWarning', 'IndentationError', …

1
Які класи не можна підкласувати?
Чи існує якесь правило про те, які вбудовані та стандартні класи бібліотеки не підкласуються ("остаточний")? Щодо Python 3.3, ось кілька прикладів: bool function operator.itemgetter slice Я знайшов питання, яке стосується реалізації "заключних" класів як на мові C, так і на чистому Python. Я хотів би зрозуміти, якими причинами можна пояснити, …
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.