00:00
好了,同学们大家好,那么我们将在本小节中继续为大家讲解函数的相关内容。好了,本小节主要为大家讲的是什么呢?一个新的关键字叫no look关键字,来,我们把它给大家写一下,给大家看看好不好写一个普通文档啊。Lo cler关键字啊,这么个东西。很多时候拿local是啥意思呀,是不是不懂啊,没有关系,我们来给大家写做实验,来看一下到底那local关键词是干嘛用的啊,以及它的作用是什么?好了,在那边我们写上一个文件,MY下划线,靠的四下划线改到十几了,14了吧。好,然后呢,在这里比我们定义一个函数啊,定义一个函数来DF,我们第一个函数叫做什么呢?叫做al OK叫al,然后呢方框啊,其实表示外边的函数嘛,然后呢,在函数内部再接一个内部函数啊在。定义一个内部函数,其实所谓的内部函数就是函数里边再定义一个函数,这个我之前给大家说了,对不对,是可以这样做的啊,那里边这个函数呢D啊,我们叫它一呢弹簧框。
01:13
然后呢,做一个小小的操作,什么操作呢?看好了,我在al的函数里边定义一个变量啊,定义一个变量,这个变量呢叫VR啊,咱写个多少呢?写一个55吧,行不行,写个55,然后呢,先听好第一个问题啊,我可不可以在此处使用VR变量呢?此处使用al内部定义的变量啊。定义的VAR变量可不可以用呢?我们不知道啊,所以我们实验一下啊,Print我们的VR就可以了。好,首先呢,为了让我们这个in的函数能够执行里边的代码,你是不是得调in呢?但是为了让in的执行,是不是得进行对al是不是,所以呢,我们在这里边啊开始看好了,先做一个操作,叫调用al函数,调用O啊o al函数,那我们在这里边调用了al函数之后,Al里边的代码是不是就可以执行了,那在al里边定义了一个变量,又定义了一个内部函数,那为了让inner也能够执行,所以我们在这块在什么呀?再调用inner函数啊调用inner函数好了,那就写上inner括号就可以。
02:25
首先明确的告诉大家,因为我们调用了al,所以内部定义了变量和内部函数这么两个东西,然后我们又调用了inner,所以inner是可以执行里边的代码的,对不对?运行的时候呢,大家可以看到结果55实际上是正常的输出了,也就说明了我们在阿尔塔中定义的变量VR5等于55,可以传递到到因儿中当中当中来进行获取操作,这个其实也很正常,因为我们之前讲过一个变量作用训列嘛,是不是它其实也属于变量作预链的一种啊,也是往里边传递嘛,好,但是有个问题大家来看,那传递进去使用,那自然访问自然可以了,是不是,那我可不可以在此处进行一个操作呢?就是在这里哈,在此处进行一个操作,在此处进行什么操作呢?好加一操作。
03:13
啊,这个其实跟我们那个全局很像啊,就是VR等于VR加一,我能做到吗?右键运行你会发现它会报错。不能哈,提示的错误依然是叫做局部变量VR不能在定义之前使用。这句话的意思就是,其实in呢,实际上是把你这个VR当做inner里边的局部VR来使用了,而不是取到外边这个55的值,那很多学们说那没有问题啊,我不就是想把这个VR拿进来吗?我写global声明是不是就可以了?声明啊,写global声明而啊。BA global本是明一个VR可以吗?这样做也不可以,这样做也不可以,很多时候能不能预算结果也好,首先来看一下。是不是不可以啊,很简单的,为什么呢?因为global明显是全局声明,一旦使用global声明它会上最外层的页面当中啊,是不是在页面级别找这个VR变量啊,哎,咱之前说过嘛,格lo就是一定是一个什么呀,全局变量是不是,但是明显你这个VR它不是全局的,它在奥里边是局部的呀,是不是?所以global是不可以这样操作的,是不可以操作拿不下来,那到底有什么办法让我们这个变量能够拿进来用,又能访问又能修改呢?这个时候我们PS3里边加了一个新的东西啊,叫做none locker,关键字none locker none locker什么意思呢?None就是否定的意思,Locker就是本地或者叫局部的意思,那locker就是告诉什么呢?In函数,我上面声明的这个变量,它不是当前的局部变量。
04:47
然后VR那不是聚变量,是什么变量呢?它是全局变量呢,也不是大家知道全局变量是不是过,所以network表示什么呢?当前变量。VR既不是全局变量当前变量,VR不是全局变量。
05:05
啊,全局变量。也不是局部变量,很们说那到底啥玩意,变量不就分两种吗?那你看你在哪个角度上看,对于VR来看,那对于al VR肯定是al的局变量,对不对?但是对于阴秒来看,你看VR它是因为里边的吗?不是,所以它不是均备量,那VR是全局液面中的吗?也不是,所以它也不是全局变量,所以我们在这里边,那洛可是明变量,VR只是告诉你,我既不是全局的,也不是什么呀,因当里边是局部的这种变量,我们可以叫它什么呀,外部变量啊,可以叫做外部变量,就告诉你我不是全局的,也不是局部的,那只能是说什么呀,我可能有函数嵌套,我是外层函数里边的一个局变量,这种情况下我们的操作就可以正常执行,看到没有是不是五十一五十五加一变成56了,对不对,所以那log关键字就是用来解决呀这个问题的,当然哈,这是PS3中这么使用的,那如果说是怎么办呢。
06:03
在最早期的PS2当中,我们是没有那关键字的,也就是说PS3才加的,那那PS2是如何解决像我们刚刚这种问题呢?来给大家看一看好不好,把这个问题给大家复制一下 PSPYTp2的解决方案啊的解决方案。的解决方案,好在PS2的解决方案里,实际上这么玩的,当然这个PS3也可以用,我们不推荐而已啊,看好了,那么克关键字咱说了PSN什么呀,P2压根就没有是不是,所以就没这样了,然后呢,我想在这里边进行加一操作,还不想报错,那么你能做的只有一种操作啊,什么东西呢?使用列表啊使用列表。问,什么事呢?就是将我们这个数值存放到列表当中啊,存放到列表当中,然后在下面访问它的时候,就使用什么呢?列表的方式来进行访问,这不列表中的只有一个数值吗?所以我们列表零啊,来访问到55加完了之后,再重新复制给列表零,然后再打印列表零就可以了。
07:06
列表零,来右键运行一遍,你会发现它也变成56了,是变成56了,你比如顺一下,我给你加十,变成65吧,来右键运行一遍。好,大家发现是不是确实可以使用啊,这是什么呢?这里边使用的是列表的穿透效果啊,叫使用列表的使用啊,叫使用列表的穿透效果,简单的说,我们的列表是可以穿过我们的内存,不,不是内存叫函数的局部环境直接传达到里边去的,所以使用了列表是可以什么呀,直接不用拿lock壳的,PS3也可以这么用,但是大家也发现了,你这玩意儿每次都得什么呀,加一个零是不是也很复杂啊,所以PS3因此才就为我们新加了一个奶关键字啊,就不再使用这种方式了,当然PS3里这种方式也是可以使用的啊,大家以后见到不要奇怪就可以了。好了,这就是关于我们的那关键字的问题,OK。好了,那本小节到此结束,下一小节我们来给大家讲解一下函数的其他部分,主要为大家讲解的是递归函数。
我来说两句