我正在使用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
}
您也可以将这两种方法结合起来,使用命名参数进行提示,然后断言以捕获使用错误参数调用的方法。