00:00
下面要大家讲的是什么呢?是我们变成数组的一个小结,你看学完了给我小结一下,简单小结一下啊,Buffer是个变程数组,类似Java的list没问题,那么这个a buffer的这种创建方式呢?是呃,使用apply的方法,还有这个aend的呢,我们追到底层,我们发现它支持可变参数,而且里面用的是open的or。可以接收可变参数,最后每APA的一次瑞带底层会重新分变空间进行扩容,那么A的这个地址呢,就会发生变化,而成为一个新的2BUFFER,你要理解这个机制,你就发现其实俄瑞buffer它底层呢,其实这个效率并不是特别高。为什么呢?它总是,其实它不是动态,它其实是一个伪动态增长。要真正的动态增长呢?理论上应该是什么样呢?理论上是在数据在链表后面直接扔东西。啊,但是但是这个奥buffer呢,通过他的机制,你就理解他第一次创建是很慢,到后面就会快了,他后面就会很快,因为他整个是按照这个固定固定程度来来做的嘛,对吧?好,这个大家理解一下,我在这做了一个小结,给大家板书到我们笔记中去。
01:10
好,这个给他来一个标题三。啊。标题三把标题三呢,这个地方为了跟前面保持一致,咱们好放到这就可以了,我给大家总结了有这么三点对吧?啊有什么四点。我就不说了,好吧。好,第一点。对,说了一下它类似于什么,第二点呢,我说了一下它的构建方法。第三点对吧,第三点我说了一下aend的它的一个函数,它的一个签名,或者它的一个实现,好后面呢,我说了一下aend的一个本质,Open pen的一个本质,好同学们这说完了以后呢,我们接着往下看下一个话题。就是电场和定场的转换,那么在我们开发中呢,我们有一个可能会遇到的问题,什么问题呢?就是我们可能需要把定长数组转成可变数组,反过来呢,我们可能把变长数组。
02:09
变成定常数组,这是有可能的,那这时呢,在SC里面提供了两个方法,一个叫To Buffer,一个叫图,是这个数组提供的。那提供了,呃,比如说torra呢,就是把结果转成一个定场的To Buffer呢转成一个呃,结果转成一个呃,可变的,注意啊,本身O2没有变化,它是返回的是才是一个变化的,再说一遍啊,这种方法没有改变O2,这种方法也没有改变O1,只是它返回的结果才是一个。你要的这个这种类型的,好,这点大家一定要反复的强调啊,好,同学们,我把这个拿过来直接给大家演示案例了。好,这是他们的编程的一个互换。那么我给大家来个标题三,好,标题三我这做了一个简单的说明,就是这个需求啊,就是需求在开发中说明。
03:08
好的。说明在开发中呢,我们经常会识到啊,在开发中,开发中我们可能会对什么呢定场。定长数组和啊变成数组啊变成数组进行相互转换啊进行转换。啊转换比如下面那么呃,这个是它的方法,一个是To Buffer啊,一个是torra,一个是To Buffer,一个是图,非常的简单,非常简单,那么这面呢,有一个小小书啊一个一个一个注意事项吧,注意事项,注意事项注意事项是什么呢?就是它的这种改变,并没有改变RV2本身这个也是啊,那下面就是代码式说明了。代码演示,其实学东西就这样子的啊,特别简单,别把这个东西简单东西复杂化了,说白了就是这是什么啊,怎么用,注意事项是什么,在开发中怎么使用更高效,其实就是一些东西,没有多大的难度。
04:11
好,那现在呢,我也不多说了,这个代码拿过来用一下就行了啊,非常简单,那现在呢,我写的是r buffer,他们之间相互转换,写个案例叫R。To啊to什么呢?R buffer哎,这样就大家一看这个名字呢,就很了然了,就相互之间的转换啊,如果说为了体现出两者相互转换一个突突是吧?啊就二二码突突两两个转换,这我自己自己能看懂吗?至少好我写一段代码,主函数代码拿过来好同样道理,现在我就不再去消了啊,我直接快捷键搞定就完事了。啊,快捷键搞定就可以了,但是知道在哪里去,这个就不说了,这个是我创建的一个buff,是个空的啊,啥都没有,因为我这边没有写东西嘛,啥都没,但是我指定类型了,只要看到这个就知道这个bar只能放整数,然后我追加了三个,这边用到了它的这个可变参数抓进去了,抓进去过后我这个地方是我的关键点啊这里。
05:11
R瑞,说明一下,诶,代码很简单,干什么呢?这句话是调用了它的一个方法,调用什么呢?哎,调用二瑞二的方法,这个方法叫to。啊,那么看一下这个方法是什么样子的啊,这个地方这个分号就不要了,我们追进去看一下。哦,咱这么干了一件事儿是吧,你看底层是不是搞了一把呀,啊溜了一把,其实这一样的换汤不换药,然后干了干了些什么copy把,诶其实你说白了,他就是把你那堆东西拿过来,重建一个新的数组给你扔进去再返回完事了。所以说这个换汤不换药,换汤不换药,说这个是干什么呢,急。将什么呀?将这个变长数组,呃,二二元是变成了么?将R,诶同学们看啊,RA这个地方我又出来这个东西说错了啊,将二瑞八分。
06:09
八分转成,诶转成这个二位底层其实也是用到了一个改变啊,底层用了改变返回来一些结果是啊,注意这个地方人家没有动力的2V2,你看那个源码也看出来2V2没有变改变,所以说我在这强调一下。就是A本身。本身没有任何改变,本身没有任何变化,还是原来类型,还是原先的数据啊,只是返回的结果是了,所以说我用了个6AWAY,那么现在呢,我们打一下看一下。好,来看看这个类型有没有变化啊,首先我六一下,你们可以看到它返回的是什么呢?呃,六。看,已然变成类型了。啊,里面是八份嘛,变了吗?哎,就这么简单,好,就这么简单六一个搞出来。
07:00
好,紧接着呢,还有现在是一个AR了,但是我要把它转成buffer,怎么办呢?To Buffer就行了啊,转过来又转成一个新的类型,哎,又转成一个新的类型,好,我们来把它做一下啊。好,代码很简单,下面呢我做一点说明。我重点是把代码这说一下啊,这个To Buffer呢,就是我们来追一下,好,我们来追一下这个代码。你看To Buffer又干了这件事情,诶又给你创新个,你看反过来又搞了一把吧,溜了一个beautiful beautiful是可变的,Buffer把你把这个翻型扔进去,然后又拷贝,其实换汤不换药是吧?诶非常的简单,那这个地方呢,我们写一下啊6ra.two8uff分TWO8分。干什么呢?是将将这个啊,将我们的啊是。是把这个就是A2啊,转成什么呢?转成我们的这个a buffer buffer底层看一下底层啊,底层的实现,底层的实现,我们可以看到刚才那段代码很简单,就这么一个东西。
08:09
还是留了一个新的,然后给你拷贝过去,所以说。这个动作呢,还是比较大啊,像这种转换一定是非常耗费时间的,这个没什么可说的,因为他要动的比较多是吧,要溜东西了嘛,所以这种转换类型就好像咱们去做一个手术,做一个什么手术呢?做一个移植手术是吧,把你的脸给换了,那肯定很很费时间的,对吧,那整个类型都发生变化了啊,所以说人家没有动力的六六啊,还是老规矩,第三点是本身没发生变化,六本身没有变化。没变化啊,只是返回类型是这样子的,好,同学们看我再把这个打印出来溜一下。六,你看这个地方变成了YouTube,但是呢,大家看到这个地方它返回的是一个MU buffer,这个buffer是不是它的类啊,那大家回忆一下这个buffer,我们看往前那个图,Buffer下面有我们的buffer,所以说它其实是一个类型啊,是一个类型,只是它是以这个类型返回的啊,没有什么大的问题,好的放到这就可以了。
09:13
好同学们,我们运行一下,看代码有没有毛病啊,看代码有没有毛病,我这儿写说明好,运行下把代码肯定是正确的,非常的简单。好。没问题啊,一个是原先是。这个是一个28分,转成了这个地方是说明它是一个数组了啊,是一个二,又把它转成了一个啊,又把它重新转回成了一个buffer返回,然后呢,这地方我又加了一个123,所以最后呢应该是123。正确的好,那有些同学就问了,说老师什么时候能用得到呢?什么时候用的到呢?好,他是这样子的啊,假如在我们开发中,你原先为了效率比较高,你是搞了一个啊,但是呢,根据一个需求。
10:03
我需要把这里面的东西整个移植到一个buffer里面去进行动态的修改,可能我临时做一下,那临时做完了过后,我还要回到原先or那个地方去继续工作,这个时候咱们就可以用buffer,就是中间可能是我做了一个中转或中了做了一个,做了一个计算,然后呢,我还回去啊,这样他就可以内心互换,好关于它呢,我们就讲这些好案例,给同学们板出,到这里就完事了,简单啊。好的,这是刚才老师讲的这一部分的内容。好,非常简单。好,那关于就是定长数组和变长数组的互换,我们就跟大家聊到这里。
我来说两句