-
Notifications
You must be signed in to change notification settings - Fork 0
20210702关于widget.title该如何理解(T,set,get)
zqy edited this page Jul 2, 2021
·
2 revisions
首先理解一个细节:
void test(String key, T value) {
map[key] = value;
}
T也是一种数据类型,他更像是golang中的空接口变量
另外就是set与get,set与get是dart所特有的,意义在于语法简化,几乎可以说,他们和泛型一样也是一种“标记”
举例:
class Person{
String name;
get getPersonDetail{
return '姓名:$name;
}
set setPersonName(String name){
this.name = name;
}
}
void main(){
Person person = new Person();
//内置的get方法
print('${person.getPersonDetail}');
//内置的set方法
person.setPersonName = 'MrWang2';
print('${person.getPersonDetail}');
}
只要记住这个用法就行了,最大的意义在于学院代码的时候能看得懂
而对于具体使用的话还是要慢慢来,毕竟无论是golang还是dart现在我才刚刚理解“条件表达式是可以替代“if else”的,或者说,*到现在才理解条件表达式的使用场景,所以还是那句话,不急
另外请看fluter源代码里的这句:
T get widget => _widget!;
也就是说get和set侧面上讲其实是用来修饰某个函数的,类似async(其实在f()的后面)而对于set和get来说其是这样的:set f~~()~~
也就是说被set/get修饰的函数需要省略掉(),而最重要的是要明确他依然是个函数,所以才可以在前面加上T,只不过很多时候dart允许省略返回值类型
下篇文章来着重探讨省略返回值类型