00:00
练起来呢,就要同学们动脑筋理解了啊,这个都说完了。最后一点就是最后一个。一段代码,这段代码呢,其实大家可以看到非常的简单,简洁,非常之简洁,怎么写的呢?我写了一个price方法,我接收一个item,大家看一下。我在这儿有一个price,我接收一个item。返回一个double。那我怎么做呢?It匹配。匹配什么呢?如果你就是一本书完事了,这个事情直接把价格返回完事了。就假设就是一本书,你就是这么多钱。啊,就这么填,那么如果你是一个帮的,我怎么办呢?大家看这里我就用到刚才讲的知识点了。我关心的不是你的描述。不要。我关心的是你的打折是多少钱,这个拿到,然后我把你后面的这一堆东西全部再取出来,因为你这个后面可能还有很多帮。
01:06
我交给了一一次,然后这个一次呢。因为这个意思,后边大家知道它肯定是个集合,是一个什么集合呢?是一个邦的集合。是一个帮段集合。于是我又使用了一次给map。我去调用这个price,这个这个这个地方可以不要。这可以拿掉,就是map,不是我把这个集合里面的帮助一次一次的再给这个price扔进去,让他递归的去计算。计算完了过后整个再求和。再减去。就打折,但是注意啊,这个打折它是一层一层的往里面打,因为他他一旦变利完了过后,他先他进去嘛,这个地位进去一次打一次折进去打,最后他是。全部都给你打折了。那这个案例呢,这个代码看起来一定有点吃力的,同学们看起来吃力,我这样再做比较啊,同学们,我现在把这段代码放到我的这一个呃视图里面,我们来分析一下他执行的流程。
02:07
啊,执行一下他分析的流程,我写到这里来,我们看他是怎么执行的,这段代码其实很简单。那么我们举一个具体的例子,大家一看就清楚了,好看一下这个代码,那这个代码。自己要写很简单,就是book_P你记都记得住对吧,这个代码记都记得住,但是你知道它怎么执行的吗?这个地方可以,这个不要。这个下划线我可以不要。啊,这条线可以不要,那我来分析它怎么执行的,我们以一个例子来走,比如说我们就以这个案例来走。我们就以这个案例看看他怎么执行的,分析一下它执行的流程。好,我把这个代码先拿到这里来。好,为了让大家看懂呢,一个最简单方法,你可以这么去分析这段代码,一位他给的案例特别复杂,所以说如果聪明一点的同学,或者基础稍微弱一点的同学呢,你可以这样看,你先把它简化成一个最简单的。
03:03
你这个先把它搞定。你要这个能看懂下面代码就了然了来,假如我们传的是这样写的,就怎么写呢?就是我们在这里用了一个price。我把这个sales传进去。好,那么这样传了以后。我这样传了以后,那么在底层他会怎么做呢?我们来一起分析一下。首先。他去匹配。你这个sales目前不是一个book。因此不匹配他。你不是不可匹配,你干啥呢,它就匹配到这了,匹配到帮了,匹配到bound过后,同学们看这段代码呢,它应该这样执行的,我写到这。第一步它就到这了,一点脉搏。把我们的这个price传进去,然后点上这个价格,其实已经拿到了是多少呢十。
04:02
能能看清楚。因为你这个第这个打折的金额是十国提取出来了吗?紧接着没有完事,为什么没完事呢?因为你里面这个麦不要去调用它去调用谁呢,他又去执行这个麦price注意。你的意思目前是一个什么?是个集合?但是你这个一次集合里面,大家都很清楚,这个一次集合里面只有一个东西,它虽然是个集合,但是这个集合里面大家想想是什么,其实只有一个不能理解吗。你你提出来就一个不可,好,这个几个里面只有一个不可。好,既然你只有一个book,其实相当于此时此刻我在进行map映射的时候,我给这个price传的这个item其实就只有一个book了,大家看能理解吗?因为你这儿只有一个部分嘛,所以说这个时候呢,他就会继续进去,但是这是他执行的是这句话。因为你创建是个不可,所以他会执行这句话,这句话会做一件什么事情呢?它会把这个P提取出来,因为你用的是样粒类。
05:01
你这个对象里面的这个事实就会被提到这。这是我们刚才讲的那个对象提取器的,也就是说这个时候它返回的是个什么东西呢?它整个地方会返回一个事实。这个事实会返给谁呢?同学们,当他这个做完以后,这个事实会返给谁呢?会返回给这个位置。你调用的位置,但他还求和,因为你事实只有一个数,求和还是事实,所以说第当这个做完以后,他这个这个做完以后,他把这个事实直接返回给他。返回给他过后呢,你这相当于执行的就是40减掉。40减掉一个十,就等于30就完事了。好,我们来执行一下,看对不对啊,那现在呢,我给大家跑一下,我举个例子,好,下面这一段代码我就放在一起了。啊,案例案例的完成。好,案例完成了,我们把这个price直接就写到这里,DF,好,我们来写一下price。
06:04
那么我接收一个it,那我写个item。Item,最后这个item呢,它整个会返回一个double类型。返回double类型,这里面呢,我做了一个match的匹配啊,对这个进行一个match的匹配,那匹配时我首先匹配的是它,先看是不是一个book。啊,Book,如果是一个book,我关心的不是他的描述,我关心的是它的价格。返回。然后继续开,如果它不是一个book,而是一个班的。那么对于这个帮,我关心的是什么东西呢?对这个B大家看到从这个代码里面,我关心的是它打折和它后面的部分,其他我也并不关心,所以说这个地方呢,我们就可以去损利了,你帮的人不就三个东西吗?看嘛,第一个是他这个我不关心,我关心的是他打折,所以说我把这个去掉,然后打折的我要。
07:07
然后我还关心他屁股后面有一堆这个多少东西,因为我不知道有多少不可,因此我就只能全部取出来,对吧,那这个时候我取的瑞,然后呢,艾特符号。爱的符号,然后啊,我就要好像取的名叫it啊,这个名字你当然也可以随意艾特,然后是下划线心。好,然后走,走到这里面没事没完呢,因为你这个意思,里面还有东西你没处理,我用了是我们前面讲的脉映色,让它一步一步的去递归的调用外部谁呢他。直接扔进群。那扔进去过后,我还要整个做完了以后我要跟他求和呀。求和完了过后减掉我们这个迪斯卡。代码就写完了。啊,刚才分析我也说完了啊,当然你这个人能不能看懂,你自己可能回去还要好好想一想,因为这个模式呢,它比较综合,它既综合了这个match匹配,还有对象,还有on apply,还有递归,还有map,这个东西还是比较综合,那如果说同学们自己能够分析出来啊,或者想明白,那对于我们这课呢,还是非常的不错,那我设计一下好朋友们,那刚才呢,我们这样子啊,我就不啰嗦了,我就直接把整个这个拿出来用好来同学们用一下。
08:29
简单代码就简单price price,我直接传入你这个cell就完事了,整个这个结果应该会等于120。刚才已经分析了120,好,那么我们打印出来一下,各位同学请看执行的结果走。好,这个我画大功夫讲的啊,我是一步一步讲的,就怕大家听不听不明白。啊,我我觉得这样加到加到这个功夫呢,没错啊重点嘛。那同学们可以看到这个结果就等于120,当然有的同学说你这个地方写的120,我能不能再加点东西呢?可以的,因为我这全都考虑到了,比如说我这book,诶,我不是一本书,我还有一本书。
09:12
哎,还有一本书叫什么呢?叫天龙八部啊天龙八部。天龙八部啊,天龙八部,那这个天龙八部呢,假设它是这个这个100块钱,这样好算吗?那这样一算,今天要返返回多少呢?就返回220块钱,220块钱,因为我三本书打折也还是那么多钱没变,那它应该变成二百二完全正确。好,同学们,关于这个题大家好好去理解啊,晚上建议大家自己把这个代码好好的捋一捋啊,老师呢,就先讲到这里,我把这个代码给同学们板述一下。哎,最后呢,解决方案其实就是就是水到渠成了,就你把这些都都明白了,就水到渠成了。啊。最大取胜,好,这边我们讲的是最佳的案例打折,对对最佳案例打折的这个解决方法。
10:01
就说完了,大家给他来一个标题三。二标题三。标题上,那这边呢,我们具体的要求也写到这了啊,具体要求去了,代码给同学们放到这,这是我们的要求,第一个对吧?诶第二个打折怎么设计的,如果我要求你们改成打折,按百分率打,你们想想怎么做啊,那就是。可以在我基础上稍微的改进一下好对应的代码,对应的代码代码和分析,代码和分析。分析,那么这个对应的代码和分析呢,我这里啊,我就不把整个这个粘过来了,这个整过来大家看起来很很乱,我就把这一小块吧。啊,把这一小块就是最核心的部分给同学们拿过来就可以了,整个拿过来看起来好像很全,其实看起来很乱的,那调用的时候怎么调的呢?哎,调的时候是这样调的。啊,前面你要呃,前面代码这都有啊这里好,那关于匹配呃,嵌套结构我们就讲到这里。
我来说两句