Имена переменных функций и использования в dart - PullRequest
0 голосов
/ 07 сентября 2018

Во-первых, простите за название. Я не уверен, как еще спросить это.

В 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);

Для меня код swift намного чище. Мне лично нравится, когда код объясняет, что происходит. Например, setColor(to: color).

Мне нравится, когда вы можете выбрать одно имя для кода и другое для использования.

Если вы хотите позвонить setColor(color), вы знаете, что он делает, но он далеко от обычного английского. Вы также можете сделать setColorTo(newColor: color), но слово «to» не должно быть в функции. Кроме того, его вызов newColor делает его более многословным, так как он соответствует коду и при вызове функции.

Есть ли способ использовать swift-подобный синтаксис в dart?

1 Ответ

0 голосов
/ 07 сентября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...