00:00
接下来我们来介绍另外一个for推导式里边比较有特色的地方,那就是所谓的引入变量,哎,那这个引入变量的语法其实。跟前面我们讲的嵌套循环是类似的,都是前面一个I,后面一个J分号分开对吧,相当于两个表达式,那这里要注意的是。引入变量的JJ作为一个引入变量,它其实跟循环变量是不同的,之前嵌套循环,它本质其实是双重放循环嘛,所以I和G都是循环变量,都是基于一个范围或者基于一个集合去做变利的,这样去取值的。而我们现在的G呢?哎,大家看它并不是从一个集合里面去取,而是直接就根据J,根据I对于J做了一个赋值,就相当于多了一个表达式而已。啊,那所以接下来我们做这个处理的过程当中,它其实就只是相当于多了一行代码,这是跟I相关联产生出来的一个变量,所以我们把它叫做引入变量,其实在平常的代码里边,我们也经常遇到这样的一个需求啊,接下来我们就来。
01:13
具体做一个测试,那我们还是回到for循环这个测试文件里边,接下来我们到了第六部分。循环引入变量,那呃,之前我们其实在一些编程或者说项目处理的过程当中,也会发现这样的需求,就是比方说我定义了一个循环量,一到十还是一到十,然后接下来呢,我可能需要输出的是,首先我要输出当前的I是多少。然后呢,我可能还需要输出另外一个变量,这个变量呢,跟爱有关,我想输出就是就是相当于是跟它有点像,有点像相补充的那个数,对吧,就是有点像我们原码补码的那个关系,这个是什么关系呢?就是。
02:06
I是一的话,我就输出九,它俩加起来是十,相互互为补充啊,那如果I是二的话,那个变量我就输出八,哎,所以接下来我就要单独定义一个变量AA等于什么呢?就等于十减二。那所以接下来我最后要输出的这一个I和J的值,其实大家能够想到啊,最终应该输出几行呢?那还是只有I是循环变量嘛,所以I有十个一到十,那最终输出的当然就是十行了,I有十个,每一个I的值都对应着唯一的一个G,所以I是一的时候这是九,I是二的时候J是八。S3的时候,这是711对应,互为补充,这就是我们的这个循环变量的一个基本的定义啊,那这种方式,这是Java里面也可以这么去写啊,那在SKY拉里面,我们就发现了这样一个这这样一个变量,它其实只跟我们当前的I有关,那所以跟我们后面的具体的处理逻辑其实没什么关系,所以我能不能也把它提到for推导式上面的这个表达式里边来呢?
03:15
完全可以,就跟我们前面对于这个多重for循环啊,循环嵌套的定义是一样的,我直接可以把它提上去啊,所以接下来我们看到所谓的引入变量,其实就是把这个J直接放到上面来定义了,那下边就不需要单独再去做声明了,那这样的话,我们的表达式就会更加的简洁,而且那也会更加的清晰。但重点就是要区别一下当前的这一个循环引入变量和前面我们提到的循环嵌套这里边,这里面最大的区别就是尽管都有I和J2个变量,但是这里的J呢,它并不是负推导式啊,它并不是从一个集合里边去取值的,而是直接把它定义出来了,直接说它的值等于什么,这就是引入变量。
04:06
啊,那对于这个引入变量而言,在。俩俩的写法里边呢,还有另外一种常见的写法啊,就是如果写在一行中间需要用分号分割啊,那如果说你想把它写成多行的话,你怎么样呢。我可以把它写成花括号的一个表达。然后可以直接换行了,大家看这样的话,这就很像很类似于我们中间这是一段代码块,代码块呢先定义了一个循环变量,然后基于这个循环变量又定义了一个引入变量啊,就这么一行一行去去把对应的这一个变量都声明出来,然后里边还是真正的这个for循环的循环体啊,所以这种写法也是常见的,大家也要了解到底怎么去做。
我来说两句