dart中的函数和用法变量名称

时间:2018-09-06 22:37:32

标签: dart naming-conventions naming syntactic-sugar

首先,对不起标题名称。我不确定还有什么要问的。

我们可以迅速运行以下代码:

func setColor(to newColor: UIcolor) {
    self.color = newColor
}
setColor(to: .blue)

在dart中,我知道执行该代码的唯一方法是:

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),但函数中不应包含“ to”一词。另外,调用它newColor会使它更加冗长,因为它适合代码以及调用函数时。

有没有办法在dart中使用迅捷的语法?

1 个答案:

答案 0 :(得分: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)上的开销。

  

“确定的Real Programmer可以用任何语言编写FORTRAN程序。”

Dart不是Swift,它在许多明显和微妙的方面都不同。如果您尝试用Dart编写Swift,您将失望。我建议尝试改写惯用的Dart,一会儿再看看。