dart中的函数和用法变量名

问题描述 投票:0回答:1

首先,抱歉标题名称。我不知道怎么回答这个问题。

在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 naming-conventions naming syntactic-sugar
1个回答
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;

如果这不是真正的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,看看一段时间后感觉如何。

© www.soinside.com 2019 - 2024. All rights reserved.