Имена переменных функций и использования в dart
Прежде всего, извините за название названия. Я не уверен, как еще спросить это.
В Swift мы можем запустить следующий код:
func setColor(to newColor: UIcolor) {
self.color = newColor
}
setColor(to: .blue)
В дартсе я знаю только один способ сделать этот код:
setColor(Color newColor){
this.color = newColor;
}
setColor(Colors.blue);
Или же
setColorTo({Color newColor}){
this.color = newColor;
}
setColorTo(newColor: Colors.blue);
Для меня быстрый код намного чище. Мне лично нравится, когда код объясняет, что происходит. Например setColor(to: color)
,
Мне нравится, когда вы можете выбрать одно имя для кода и другое для использования.
Если вы хотите позвонить setColor(color)
Вы знаете, что он делает, но это далеко от нормального английского. Вы могли бы также сделать setColorTo(newColor: color)
но слово "к" не должно быть в функции. Также звоню newColor
делает его более подробным, так как он соответствует коду и при вызове функции.
Есть ли способ использовать быстрый синтаксис в дартс?
1 ответ
В Dart вы обычно устанавливаете переменную напрямую, а не используете унарную функцию, начинающуюся с set
, То есть:
this.color = Colors.blue;
Публичные не финальные переменные отлично подходят, вы можете установить их напрямую. Если вы хотите сделать что-то большее во время установки, вы должны использовать getter и setter с закрытой переменной:
Color get color => _color;
set color(Color newColor) {
logColorChange(_color, newColor);
_color = newColor;
}
// and then still write:
this.color = Color.blue;
Если это на самом деле не проблема сеттера, а просто проблема именования общих параметров, то Dart не позволяет вам предоставлять разные внешние и внутренние имена для одного и того же именованного параметра. Если вы хотите другое имя, вы должны будете объявить его в методе:
void setColor({Color to}) {
Color newColor = to;
this.color = newColor;
}
Я не знаю ни одного предыдущего запроса на такую функцию, возможно, потому что именованные параметры в Dart всегда являются необязательными, поэтому они не используются так часто, как требуемые позиционные параметры для начала, и использование setFoo(to: something)
чувствует себя как над головой просто setFoo(something)
или же setFooTo(something)
,
"Настоящий Программист может писать программы на Фортране на любом языке".
Дротик - это не Свифт, он отличается многими очевидными и тонкими способами. Если вы попытаетесь написать Swift in Dart, вы будете разочарованы. Я рекомендую попробовать написать идиоматический Дарт вместо этого и посмотреть, как это будет выглядеть через некоторое время.