首先,抱歉标题名称。我不知道怎么回答这个问题。
在swift中,我们可以运行以下代码:
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
使它更加冗长,因为它适合代码和调用函数时。
有没有办法在飞镖中使用swift语法?
在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;
如果这不是真正的setter问题,而只是一般参数命名问题,那么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,看看一段时间后感觉如何。