首先,对不起标题名称。我不确定还有什么要问的。
我们可以迅速运行以下代码:
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中使用迅捷的语法?
答案 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,一会儿再看看。