00:00
好,那上午的话呢,我们写这个叫team service里边呢,咱们把这个诶关于添加这个操作其实就已经讲完了啊,添加完了以后呢,后边还有一个叫诶remove member,就涉及到这个移除具体的开发团队中的一个成员这样的操作,在讲这个方法之前呢,我们再稍微的把这个有几个小的问题呢说一下啊,第一个小问题就是咱们这个。嗯,在这个data当中啊,咱们这块呢,这不提供了两个数据哈,一个呢叫employees这个数组,一个呢,是我们这个叫equipment的这样一个数组,这两个数组我们需要把这个数组的数据呢,给大家装配到咱们的这个,嗯,Employees这个数组当中啊,那有同学呢,可能会有这样的一个担心啊,这属于我们的第一个相相当于给大家再重新阐述的一个小的问题,什么担心呢?就是我们呢,在装配的时候呢,咱们是便利一下我们这个数组。啊,这个数组的长度的话呢,就是我们依托于是本身在这塔当中建的这两个数组的这个长度决定的,啊啊,这是我们获取了一下这个的长度,呃,然后呢,来决定于咱们要造的这个数组的一个。
01:03
长度了啊,那做完以后的话呢,我们通过电内的方式呢,去呃,把这个employees这个就data当中的这个数组的数据呢,一个一个给它取出来,那取出来过程当中呢,会涉及到我们再去获取这个设备,哎包括的话呢,我们除了设备之外啊,还会涉及到像这个比如说bonus啊stock呀,哎股票和奖金哎这样的数据的获取啊有的同学呢,可能是有这样的担心啊,担心什么呢?就是我们再去呃找具体这个I。就我们编了一个数组这个I啊呃,找这个I所对应的这个数据的时候啊,除了呢,我们拿到这四个信息,因为我们知道每一个呃,这个这个外层的这个元素都有这四个基本的信息,就这四个基本信息啊呃,有的同学可能会担心说我这家去取的时候呢,有的时候呢,你取这个,比如说这个这个。这是I相当于等于一的时候啊,我们取的这个里边这个元素这个位置呢,能取到啊,你要是在这里边去取这个索引,这个索引相当于是零啊,12345啊,这个是角标是五啊,你要在这个元素当中,这个元素当中,或者这个元素当中去取这个角标五就取不到。
02:13
啊,有的同学可能会担心说,那会不会说我们在这块装备的时候,会出现说这个这在出现什么异常。哎,应该叫角标对界了对吧?啊,比如说呢,我们这呢,本身对于这个元素来讲,我们只能找到角标是01234这样的元素,当我去取这个角标五的时候呢,就取不到,那这时候呢,用不用担心这个事情,在这装配的过程当中。是不是不用啊,诶诶为什么不用呢?就是咱们在取这个tap的时候呢,咱们去,哎这个确认了一下,他到底是一个普通的员工,哎,还是一个程序员设计师还是一个架构师,那如果说他是一个架构师,那对应的呢,他在这里边的一个长度呢,自然而然的就会比较长。啊,那我们取的时候呢,就取的多一些,那如果你要就是一个普通的这个员工,那我们这块取的时候呢,就不会取后边这样的一些元素。
03:05
啊,是通过这样的这个方式呢,我们来进行的一个控制啊,这是我们说的第一个问题,然后第二个问题呢,就是呃,大家呢,就是这个这个咱们上午的时候呢,其实也说这个事儿了,就是大家呢,担心咱们在判断是否exist的时候。在这个位置,哎,我这边呢,写的是按照ID进行判断。啊,咱们上午呢,我也说了,说咱们按照这个member ID其实也可以判断是否是存在,这个同学可能还没想明白,这会能想明白这个事吗。就是咱们再把这个回忆一下,咱们这个方法啊,咱们把一个员工现在要添加到这个开发团队当中,咱们这块呢,这不有很多的这个说不满足的这个情况吗。这里边儿有这么多种情况呢,是都不满足的,那我们都需要考虑一下,其中有一项呢,说该员工已经是这个诶这个啊,该员工已在本开发团队当中了。
04:01
呃,怎么证明已经在本开发团队当中了,这个我们比较容易想到的话呢,就是拿这个ID进行判断,这呢假设就是咱们已经呃造好的这个team就是开发团队了,呃,这里边呢,有好几个具体的这个成员,然后现在呢,我们想把这个成员呢添加进来,说能不能加呢,那就看已经在不在了。呃,比较直接的一种想法就是咱们拿你要添加这个元素的ID和我们已经添加进来的这个的ID呢,去进行比较,看看是不是相等啊,因为所有的员工的ID呢都不一样,你要是假设有一个是相等的,那肯定是已经存在了。嗯,哎,这个写哪了。哎,这个是吧,哎就已经存在了,这呢,我是拿的这个ID进行比较的,然后上午的时候呢,这不我也说了一下,说呢,其实咱们也可以把这个E呢,做一个强转,强转成一个programmer,拿这个member ID。啊,也可以去做一个判断,就是这的换成member也可以,这个能理解不。
05:03
上午的时候呢,稍微说了一下,没有说透哈,有同学下来还有这个疑问,就是说咱们本身你这个员工,这个员工呢,他假设之前没有添加到这个这个开发团,开发这个成员过,开发团队当中过,那他的这个member ID是不是就默认支持零啊。对,这个时候呢,你去这里边判断呢,他就不会说有谁跟他一样,因为咱们map ID呢,至少也是从一开始啊,往往后这样去算的,那像这种情况呢,就是是可以考虑添加成功的,他也相当于判断的话呢,就是不存在的了,那这是一种情况,还有一种情况呢,就是我们本身这个员工的话呢,他可能之前加过,比如他加的时候呢,假设哈,他第一次添加它是个三,然后呢,三的时候呢,后边可能还有一个四,哎,然后呢,我们把这个三呢给它就移除了,咱们下边不是有一个木的方法吗。那移除以后这个员工呢,咱们呃,他的那个member ID呢,咱们可以不去改,就相当于这个员工呢,我给大家移出来了,他的状态呢,从一个BC状态改成一个free状态了,但是这时候它的map ID你也可以考虑给它也制成个零,或者呢,我这时候就不置零了,不是零的时候呢,那就相当于它还占用了一个三。
06:07
啊,那如果说这后边有个四,那我现在又想把它添加进来,哎,那要是添加成功,它就该是五了,因为这时候呢,这里边相当于本身已经没有三这个数据了嘛,这时候你再判断它有没有三,其实这时候呢,里边是不是就没有三。没有三就能添加成功吗?啊,那能添加成功,这时候呢,只不过我们把它是不是又重新复个值,可能就变成五了呀。哎,就这样子的。就是我们拿这个MID,其实去判断的话也行,能理解吧,或者你要这块呢,感觉还是不是很清楚,那你就不要想MID的事了,这个你就拿这个ID进行判断,因为ID我们不会说来回对它进行修改了啊,一次就给它定义好了。行,就拿这个ID可能更清楚一些啊,这是我们说的第二个小的问题,然后第三个小的问题。嗯,这个这是咱们来判断说这个团队当中,这个最多咱们说只能有一个架构师,两个设计师,三个程序员,我这个逻辑呢是这样写的。
07:03
有的同学呢,不是这样写的,他怎么写呢,他这样写,大家来看一下这种写法对不对。哎,这样的一种写法啊,就是这个写法呢,就是来替换一下这里边的这块我记得啊,怎么写呢,这样写说if,如果呢,我们这个P,它in terms of architect,就是它是一个,呃,这个。架构师是吧,呃,是一个架构师,然后呢,这个同时。啊,适合加构式的同时呢,如果还发现说你这个还大于一,就相当于是我把这里边跟外边这个呢,给它合并在一起了。哎,在这种情况下呢,我们就给它抛出一个这样的异常这一个啊,然后再来一个LC。那就是这个。是个设计师,哎,同时发现你这个大于等于二了。
08:02
哎,下边大概我怎么写,大家也能够想到了,你想一想,这种写法跟上面这种写法是不是一样?下面这种写法可不可以?毕竟呢,上面这数都嵌套了啊,我们下边的写法相当于就不用嵌套了。说哎更好,那你看是不是这样子的是更好。这一种写法。这种写法,别的代码都一样。能不能这样写?嗯。如果能,那就不用多说了啊,那就能,嗯,如果说不能不能,你得举一个反例。可以吧?
09:01
有同学声音比较小啊,这个你要自信一点的,就可以大点声了。能能行吧。这样写对不?不对吧。酒都自问自答了,都是吧,这样对吗?不对是吧,这个大家呢,下来再想一想,可能这个刚放假回来,这个脑子还没有同步过来是吧?嗯,这样写跟这样写是不行的啊,就不一样的,咱们仅从那个逻辑上讲。都可以说的清楚,什么意思呢?比如说大家看啊,就是呃,具体跟这道问题不一定相关了,就是我们从这个语法层面去讲,假设的话呢,比如说我们现在这个P有个对象假设呢,它这个是满足的,就意味着是处了,这样true的话呢,它就进去了,它进去以后实际上就意味着这个L跟这l if是不是就都不会执行了,嗯,对,他就从这进去了,进去以后我里边这个不管你是处也好,False也好,这个都不会执行。
10:04
没问题吧,嗯,那行,那你看这个。这个如果说呢,我们第一条这个呢,还是个处,就像上面是个处,你进去一样啊,这个处这个处,但是有可能这个不是处。这个是出,这个不是出,这是个语,是不是这一项就进不去了,这一项要进不去的话呢,它是不是就有机会直行下面。所以仅从这个语法层面呢,我们就能看到他俩呢是不一样的啊,你要觉得说还差点意思,那咱们举一个实际例子。我举个实际例子来证明它是不一样的,也就是说呢,有的同学如果这样写,你现在感觉没问题,但是实际上你去测试的时候,你会发现这个逻辑呢,错了,怎么错了呢?举个例子,比如说咱们现在这个开发团队当中,我有两个设计师,注意啊,我现在有两个设计师。这个团队当中,假设我就只有俩设计师行,然后现在的话呢,我来了一个这个新员,新的一个employee,这个员工呢,他恰好是一个架构师,他恰好是一个架构师,那按正常来讲,这个是不是能添加成功啊。
11:04
对的,你看咱们这个逻辑说P呢,是不是一个架构师,是的,然后这个P的话呢,嗯,大于等于一,因为咱们没有添加过啊,这个相当于不满足了,相当于这块呢,就没有去执行这个肉了,呃,因为我这块进去了也没有执行它,这个呢也不会考虑,那就相当于分到后边,咱们就会给他添加进来。所以咱们这种写法呢,是OK的,T呢是能够加进来的,那你看这个逻辑。这个P的instance of architect是不是一个这个加速式呢?是那这个,呃,现有的这个architect是不是大于点零了,不是。所以这块呢,是不是就是整体是false啊,这块整体是false,它是不是就自动的跑到这来了啊,这问说P是不是一个designer。哎,这时候你要小心点,咱们说你要22都是的话,它的负类是不是就更是除啊,所以这个呢,它是个处,然后呢,你现在的话呢,这两个设计师的人数是不是大于等于二是吧。
12:01
是的,然后呢,你会发现它出来了一个异常。对吧,这不就是一个这两种情况不一样吗?也就是说呢,大家如果有的同学你这样的方式去写的时候,你在测试的时候,比如说呢,恰好你这块呢,已经添加俩设计师了,现在呢,要添加一个架构师进来,莫名其妙的抛了一个异常说团队中至多只能有两名设计师。就会出现这样的异常,本身呢,其实是不应该的,就是因为你这个逻辑呢写错了。啊,所以这块你看我们这个嵌套这种写跟这种合成一个写法呢,是不一样的啊,这个具体问题大家具体去分析,所以这个写法呢,是一个错误的啊,咱们这呢是一个正确的啊,可能有同学本身也没想按照这个错误的写,结果把这个问题抛出来以后呢,搞懵了是吧,下来想一想啊,就关于这个不同的这语法,哎,你要能够想透就可以了啊,这倒是我们说了三个小的问题啊,方便大家呢去理解我们这里边的逻辑啊。
我来说两句