2015-02-08 67 views
1

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

void putInfo(String PersonName,String GroupName){ 

但当然,我可能会不小心不正确地

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

调用它是否有可能定义类型,如“PERSONNAME”和“组名”,以 必须有

void putInfo(Personname name,Groupname group){ 

抓s uch错误?当然,可以适用于整数太(宽度-INT VS高度-INT),日期等
预先感谢
欢呼
史蒂夫

回答

0

的这是例如去,但在DART唯一很容易你能做的就是创建一个新班级。

如果你有很多这样的类并使用它们,这会严重地损害性能。

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

总的来说,我会劝阻在飞镖中做。

+1

我知道我不应该只是说谢谢(呃,我认为),但是,无论如何感谢,并为以前的帮助/建议。永远感激。史蒂夫 – Lymp 2015-02-08 17:09:58

2

你不能以你想要的方式来扩展字符串,但为了你的目的,你不需要。

可以使用指定的参数相同类型的参数来区分:

void putInfo({String personName, String groupName}) 

然后调用它:

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

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

一个更好的办法是对参数进行一些验证:

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

您也可以结合这两种方法,使用命名参数提示,然后断言赶上方法被称为与错误的论据。