Cинтаксис add(2)(3) на JavaScript
Стоїть завдання реалізувати можливість такого синтаксису на JavaScript: var a = add(2)(3); //5. При чому, потрібно щоб add приймала довільну кількість параметрів (дужок). Логічно, що вона не має впливати на жодні інші математичні чи нематематичні операції та притримуватися пріоритету ((add(2)(3)(4) + add(1) - add(2)(3)); //5, (+('2' + add(0)) + add(1)); //21).
Коментарі (8)
RSS згорнути / розгорнутиvolopav
список ініціалізаторів, на жаль, працює лише з конструкторами, а базовий Add() повертає void, і тому його ніяк не можна склеїти в ланцюжок (шо інколи дуже хочеться), тому можна замістити Add() новим методом, який можна було би склеювати, а можна і зробити зручніший як практично так і візуально метод, як, до прикладу, AddAll()
p.s. можна було би ше додати шось типу
але то вже таке )
cyba
Джаваскріптове лаконічне рішення виглядає так:
volopav
2) про C мови не було, хоча в ньому таке ж можна
2.1) шарповий AddSequence приймає довільну к-сть параметрів — params же, йомайо
2.2) навіть ніразу не динамічний і зі всіх боків статичний C вміє приймати в функції довільну к-сть параметрів різних типів, і той же: int printf(const char *format, ...). те, якою ціною «динамічність» досягається в тому ж printf() — питання техніки і не більше
3) це ускладнення змушує мізки розминатися, а не бачити мову лише з одного боку
автору статті — окреме дякую ше раз за свого роду пост-фільтр
cyba
Стаття про джаваскріпт, тому я запитав, де те, про що писав автор застосувати на практиці в джаваскріпті, а ти мені чогось втулив приклад сішарпу — для чого?
Те, що для тебе є не зовсім очевидними можливостями самого javascript для мене є очевидними можливостями і я знаю плюси і мінуси цих можливостей. Саме тому я запитав автора сферу застосування такого підходу, бо все ж таки не все знаю. Може бути, що в воно ідеально підходить для вирішення деяких задач і мені якраз цікаво про них почути. Про написання коду заради самого коду я знаю.
volopav
cyba
>> If you know the answers, located in Sydney and looking for a job, drop me a line.
cyba
Подібним способом можна, наприклад, отримати статичні «приватні» змінні:
Або ж таким способом можна плодити, наприклад, ітератори. Або придумати ще якийсь приклад. Можна підміняти функцію на іншу. Фантазії немає меж ;)
kunik
Тільки зареєстровані й авторизовані користувачі можуть залишати коментарі.