dart扩展字符串类型以进行类型检查

时间:2015-02-08 14:32:50

标签: types dart

我正在使用Dart,并希望利用静态类型检查,通过(类似)扩展String类(我知道你不能)。
说我有:

 void putInfo(String PersonName,String GroupName){

但当然我不小心用

错误地调用了它
 putInfo("grade2","Fred Bloggs");

是否可以按顺序定义“人名”和“组名”等类型

void putInfo(Personname name,Groupname group){

抓住这样的错误?当然,这也适用于整数(width-int vs height-int),日期等。
提前谢谢你 欢呼声
史蒂夫

2 个答案:

答案 0 :(得分:2)

您无法按照自己的方式扩展String,但出于您的目的,您不应该这样做。

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

void putInfo({String personName, String groupName})

然后叫它:

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

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

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

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

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

答案 1 :(得分:0)

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

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

您无法实现多个运营商,因为只有部分运营商可以拥有自定义实施。

总的来说,我不鼓励在Dart中这样做。