Skip to content

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允许省略返回值类型
下篇文章来着重探讨省略返回值类型

Clone this wiki locally