Чи є додатковим / може бути, тип корисний у динамічних мовах?


14

Optionalкорисний очевидним чином у мові статичного типу, але мені цікаво, чи корисно це також у динамічних мовах. Зазвичай немає компілятора, який би сказав вам: "Ей, ви використовували це Optional<String>як String", тому вам все одно доведеться виявляти свої помилки під час виконання. У мене є статичне тло набору тексту, і з моєї точки зору я не бачу переваг Optionalтипу в динамічній мові.

Відповіді:


13

Ця слабкість насправді не відрізняється від усіх типів у динамічних мовах. Ви повинні запустити його, щоб дізнатися, що в ньому. У цьому плані варіанти не дуже відрізняються.

Параметри - це більше, ніж просто статична примітка про те, що значення може бути, а може і не бути. З ними пов'язані також операції. Ланцюги відображених операцій на опціях - одна дуже корисна функція, яка не дає вам перевіряти на предмет відмови після кожного кроку ланцюга.

Навіть якщо ви тільки одразу отримали це значення, воно все-таки запропонує програмісту перевірити Nothingйого перший раз і не вдалося. Без жодного варіанту, таке продавання відбудеться лише в тому випадку, якщо воно відбудеться nullвперше, коли ви його запустите. Багато нульових перенапряжжів вперто чекали, поки продукт опиниться у полі.


0

Я можу поговорити за «Objective-C».

Оскільки динамічні типи мов пов'язуються із запізненням, nilпритаманна перевірка на "необов'язковий" (нецільове значення представлено ): Якщо ви перевіряєте тип під час виконання, ви перевіряєте їх nilнеявно. Звичайно, це можливо. Це теж робиться по суті.

Для мов, що вводяться статично, ця додаткова концепція є вигідною, оскільки вони повинні приймати рішення типу під час компіляції - ситуація, в якій динамічні типи мов ніколи не виникають.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.