Определение типов в динамически типизированных языках

Пишу на динамических языках как Python, Common Lisp и тд. И вот, бывает просматриваю исходный код библиотек, если у них не хватает документации, и бывает проблема определить какого типа входные данные ожидает функция, конструктор и тд. В статическом языке я бы это увидел по описанию типа, а тут приходится гадать. Может есть какой-то способ узнавать какой тип ожидается, о котором я не знаю? Например, функция ждет параметр с именем id. В условном с++ я бы увидел string id, и понял бы.


Ответы (1 шт):

Автор решения: gaxeliy

Чаще всего, используемая библиотека все-таки содержит документацию. Плюс сейчас еще модно использовать опциональную стат.типизацию в Python и Ruby, как раз для этих целей. Самый простой способ - посмотреть исходники. Если не помогает - запустить REPL (командой python для Python, irb для Ruby) и передать все мыслимые типы, которые, как вы подозреваете, могут подойти. Оптимистичный способ - инструменты вывода типа. Обычно такие встроены в IDE и могут дать подсказку. Есть более продвинутые инструменты командной строки (typeprof в Ruby с недавних пор поставляется сразу), которые помогут вывести тип почти из любого кода.

→ Ссылка