00:00
了解了for循环,那接下来我们再来介绍另外一大类比较常见的循环控制的方法,那就是well循环,当然了,有well就有do well,它们一般都是放在一起来说的,在SKY语语法里边啊,也支持well和do well,它的使用方式跟Java是一模一样啊,所以它其实引入这个主要就是为了兼容Java。这里需要给大家说的一点是,在scda里边呢,并不推荐大家使用while和do well,为什么呢?首先for循环能实现的功能,其实while循环能实现的功能,用for循环都能实现,那而while循环有一个什么样的特点呢?就是while循环我们必须要在外部去定义变量。它的循环变量首先就必须在外部去定义,然后另外跟for循环不一样,For循环我们正常情况下是没有返回值的,但是呢,可以利用业务的关键字去把当前的这个循环变量经过计算之后得到一个结果,生成一个新的集合类型,但是while循环没有这样的一个用法,所以如果我们想要用while循环得到一个返回值的话,那就必须还是在外部定义一个变量,然后在里边去做更改了,哎,那大家就会发现这个过程就有点儿像有一个全局变量,然后在内部的代码块呢,我们随时去做更改,这其实是。
01:22
循环内部会对外部变量造成影造成影响的,在我们如果要是大数据处理场景下,那往往会使用这个并行处理,那大家会想到每一个并行处理的代码块都会影响我们外部的一个全局变量啊,那这个显显然最后的结果就不正确了嘛。所以在skyla的设计里边,我们为了大数据的这种应用场景设计出来的语言,它其实是不推荐大家使用while循环的。甚至啊,呃,大家会知道,对于这个函数式编程语言。而言,它的设计思路其实是根本就没有变量的,所以真正的函数式编程语言,不要说while循环,连for循环都没有,它直接就没有循环啊,那它真正的函数式编程语言怎么实现循环类似的功能呢?它是用递归来实现的啊,当然这是后话啊,我们会在后边讲到函数式编程的时候再给大家介绍一些相关的概念,我们这里只要知道while循环在skyla里边是不推荐的,推荐大家使用的是for循环啊,那当然了,尽管不推荐,我们也要做一些了解啊,至少要跟Java要兼容起来,那这里边我们还是在代码里边做一个简单的测试,所以新建一个。
02:39
的object,目前S05,我们要测试的是。Well,循环。没方法写出来啊,那首先这个我们就一起测试这个well和do well吧,首先我们来测试well,那首先因为我们需要这个一个循环变量,而这个循环变量呢,不能在V要里边定义,所以只能在外边定义了,而且这个变量的值还要更改啊,那它就不能是V,不能是value,必须得是Y了啊,我定义一个,比方说A作为当前的循环变量,比方说开始就等于十啊,那其实大家知道我可以接Y循环啊,假如说当前我希望要去让它循环十次,循环多次的话,那可以怎么样去判断呢?如果当前的A。
03:36
大于一的话,接下来我就直接做这样的一个打印输出,对吧?哎,我们直接说是this ISA l loop这一个well循环,然后后边我们还可以搭上当前的当前的A前的这个循环的循环变量你是第几次啊,能看的比较明显,要注意后边我们要把循环变量做一个更改啊,每一次我们一相当于A减减啊,每一次减一,那大家知道从十开始一直减,减到一的时候还可以继续执行,那再减一减成零,那就退出了啊,所以当前其实就是要执行十次,非常简单啊。
04:23
我们可以看一下具体的结果。从十到一啊,相当于就是我们之前for循环里边啊,呃,I从10TO1,然后BY负一。补偿给负一这样的一个做法,那另外呢,我们还有就是这个to well well的特点其实跟这个well是差不多的啊,区别就在于它要先动,也就是先不管当前的循环变量是多少,我先要执行一次,至少执行一次啊,那所以这个可以看的非常的明显,我们也可以定义另外一个循环变量B,把它定义出来,呃,然后我们一开始的时候把这个B定义成零,那么接下来我们可以直接做一个度,比方说我们当前还是啊,把这个做一个。
05:12
不出。是一个do well loop,然后加上当前的B,然后接下来呢,B点等于well e大于零,哎,那其实大家知道,如果说我们这是一个while循环的话,B大于零来去处理这些,呃,里边执行里边的这些语句,那显然B等于零的时候根本就不会执行嘛,但是现在呢,哎,现在显然它是会执行,至少执行一次的,对吧?就下面我们至少会有一个dowell,当前的B是零的时候还是会输出一次,这就是dowell的一个特点啊,整体来讲的话,跟Java其实是完全一样的,大家需要注意的就是推荐使用for循环,而不要使用while循环。
我来说两句