Имена переменных функций и использования в 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, вы будете разочарованы. Я рекомендую попробовать написать идиоматический Дарт вместо этого и посмотреть, как это будет выглядеть через некоторое время.

Другие вопросы по тегам