用于类型检查的dart扩展字符串类型



我正在使用Dart,并希望通过(某种程度上)扩展String类来利用静态类型检查(我知道你不能)
假设我有:

 void putInfo(String PersonName,String GroupName){

但当然,我可能会不小心用打错电话

 putInfo("grade2","Fred Bloggs");

是否可以按顺序定义"Personname"one_answers"Groupname"等类型拥有

void putInfo(Personname name,Groupname group){

去捕捉这样的错误?当然,这也适用于int(宽度int与高度int)、日期等。
提前感谢
欢呼
Steve

这在Go中很容易,但在Dart中,你唯一能做的就是创建一个新类。

如果你有很多这样的类并且经常使用它们,这可能会严重影响性能。

您不能实现多个运算符,因为只有其中一些运算符可以具有自定义实现。

总的来说,我不鼓励在达特做这件事。

您不能按自己想要的方式扩展String,但出于您的目的,您不应该这样做。

您可以使用命名参数来区分相同类型的参数:

void putInfo({String personName, String groupName})

然后称之为:

putInfo(personName: 'Fred Bloggs', groupName: 'grade2')

这种方法的一个缺点是命名参数是可选的,因此现在可以在没有任何参数的情况下调用putInfo。另一个问题是,这只是一个有用的提示,并不能阻止某人使用错误的参数(personName: 'grade2)调用putInfo

更好的方法可能是对参数进行一些验证:

void putInfo(String personName, String groupName) {
  assert(personName.contains(' '));
  assert(!groupName.contains(' '));
  // More asserts validating that your arguments are correct 
}

您也可以将这两种方法结合起来,使用命名参数进行提示,然后断言以捕获使用错误参数调用的方法。

最新更新