Всем привет! Такой вопрос. Читая чужие исходники на GDScipt, заметил,

что в описании функций часто используют прямое указание на отсутствие возвращаемого значения (а точнее на возврат функцией Null) через конструкцию -> void:
func foo() -> void:
pass
Зачем нужно такое явное указание, если по умолчанию все-равно результат будет Null? Это ускоряет выполнение или парсинг кода движком? Или это нужно только для единства стилистики кода, визуальной однозначности возвращаемого значения при чтении кода программистом? Понятно, что если есть ключевое слово return, которое выдает на выходе какое-нибудь значение, например int, то лучше задать тип выходного значения,
func bar(n) -> int:
return 2 * n
чтобы движок не тратил время на выяснение этого типа, да и при чтении кода будет более однозначно поведение функции. Но зачем засорять код лишними символами и конструкциями, если на выходе по умолчанию Null и визуально можно всегда трактовать значение как Null, если оно явно не задано?

6 ответов

18 просмотров

pass это заглушка аля todo. Ну лично для меня

Argent-Argent Автор вопроса
drxwat @frontend_pashtet
pass это заглушка аля todo. Ну лично для меня

К pass у меня вопросов нет и его значение и функции в языке полностью понятны by design. Вопрос у меня именно к уместности -> void: , т.к. лично для меня эта конструкция засоряет восприятие кода.

Argent Argent
К pass у меня вопросов нет и его значение и функци...

На гитхабе если код читаешь, что явное указание типа сильно повышает читаемость. Но я лично не юзаю

Почти все ответы на вопросы есть вот здесь: https://docs.godotengine.org/en/stable/getting_started/scripting/gdscript/static_typing.html Явное указание, как и статическая типизация - это защита от передачи "не того" в "не туда". Конкретно про -> void: - это стилистика, написано всё по ссылке выше. Если есть что возвращать - некое значение будет возвращено, да, тут все капитаны согласятся 😁 Если конструкция лично кому-то засоряет восприятие кода - don't use it 🤷‍♂️ А про преимущества динамической типизации перед статической в целом - в другом чате, пожалуйста. Конкретно про GDScript: есть пути увеличить скорость выполнения скриптов, в доке выше есть упоминание некоего JIT compilation 😉 Это в дополнение к слою валидации, который данный инструмент (static typing) предоставляет. Если есть интерес про грядущее/нестабильное, то можно ознакомиться вот с этими постами, там также есть про статическую типизацию: https://godotengine.org/article/gdscript-progress-report-typed-instructions https://godotengine.org/article/gdscript-progress-report-feature-complete-40 "Note that some optimized instructions are applied with type inference but to enjoy the most benefit you have to use static typing for everything (you also get safer code, so it's a plus)."

Argent-Argent Автор вопроса
Argent Argent
+ за исчерпывающий ответ

Тебе с такой маленькой кармой (-1) нельзя менять её другим

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта