我正在使用Dart,并希望利用静态类型检查,通过(类似)扩展String类(我知道你不能)。
说我有:
void putInfo(String PersonName,String GroupName){
但当然我不小心用
错误地调用了它 putInfo("grade2","Fred Bloggs");
是否可以按顺序定义“人名”和“组名”等类型
void putInfo(Personname name,Groupname group){
抓住这样的错误?当然,这也适用于整数(width-int vs height-int),日期等。
提前谢谢你
欢呼声
史蒂夫
答案 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中这样做。