00:00
好,同学们,这一节开始呢,我们向大家介绍一下flux语言里面的复合类型,所谓复合类型呢,就是由我们的十个基本数据类型共同组合而成的新的数据类型。好,那么我们现在呢,从record开始讲起,也就是记录。那么所谓记录呢,它其实就是一堆键值对的集合啊,你看看这个语法呢,其实有点像Jason啊,那么这个里面呢,一个记录里面啊,它的键必须得是字符串值呢,可以是任意的类型啊,那么这里呢,可以给大家敲一下展示一下啊,回到我们的web UI。啊,这里呢,我弄一个变量B啊,然后接下来一个花括号就是我们啊记录的声明。啊,那么接下来呢,我可以往这里面去传一个介之队。啊,比如说我现在呢,有一个键叫name nameme啊,然后呢,再打一个冒号。啊,再写一个Tony toy啊,那么这个呢,这一个这一对它就是一个建制队啊,如果我后面呢,再想加个建筑队,需要用需要用到这个逗号呢,来进行分割啊,比如说A。
01:14
18。啊,那么注意啊,在我们的record里面呢,因为我们规定啊,所有的键都必须得是字符串,所以说呢,你这个字符串上的这个引号呢,可以省略,但是呢,有一种条件除外,哎,就是如果呢,你这个键啊,你这个键里面有空格,比如说呃,XY表示我的坐标,那加上一个呃冒号,然后呢,我希望用一个字符串来表示,比如说是20,逗号40。啊,那么现在呢,这因为这个键里面呢,有一个空格,所以说你必须呢加上双引号,否则的话呢,哎,在语法上直接报错啊,加上双引号好啊,那么现在啊,可以看到啊,直接点击提交看会怎么样,哎这里说呢,你这一个复合类型,你这个record呢,不能当做一个列里的数据,也就是说明我们英Fla啊,DB发DB这个数据库里面啊,它的这个啊一列啊字段,字段的类型呢,不能是这个record了啊那么我们现在怎么办呢?还记得我们有一个display函数Di play,哎,括号V冒号,然后呢,把它给递过来。
02:25
再次。哎,看到我们的原始数据。往下拉一下。好,你可以看到呢,现在它已经转成了一个这样的字符串。啊,那么有的同学呢,可能已经注意到,哎,我们这个a.from Rose这里面方括号里面,这里面套的这个花括号的数据,哎,好像也是一个record,那么对它就是一个record,哎,那么我们现在呢,可以把它删掉。呃,我们尝试呢,把币直接扔进来,好,点击submit提交。
03:00
哎,可以看到我们的这个数据呢,现在这个B就已经展示在我们的屏幕上了。而且呢,我们要注意到,哎,我这个内幕成了什么呀。哎,内幕是不是成了一个字段的名称啊,然后我这个Tony,哎,是不是成了我这个整个表里面的一行呢?哎,现在我声明一个。结构相同的。哎,这个record,我们把这个数据呢拿过来啊,把这一个age呢改成17啊,名字呢也改一下。啊,名字改成杰克J,现在我把这个C呢,放到这个方括号里面来啊B逗号C啊,这个方括号呢,其实叫做数组啊,后面我们马上就会讲到。现在呢,点击提交。哎,可以看到我们这里呢,多了一行。现在我们回忆一下啊,之前呢,我给大家说过,我们现在写的X脚本。
04:00
哎,他返回的东西呢,叫做表流。当时呢,我们是对比着SQL语言,我们说SQL语言呢,哎,它呢,做一次查询返回的呢,是这个数据结构呢,叫一张表。我们说呢,表流这个概念还没有给大家仔细讲,那么现在呢,你可以把表流理解为表,也就是说它呢大概就等于表好啊,那么我们现在可以看到啊。你现在目之所及的地方,它呢,就是一张表。那么我们的record是什么?Record是不是里面的一条记录呢?哎,是表里面的一行。哎,所以说我们flu这个返回的表流里面的表呢,它其实啊,这个表是由什么构成的,这个表呢,就是由很多个record构成的。哎,所以说我们的record呢,其实是我们后面使用flux查询以及做各种数据转换操作的核心数据结构。
05:04
好,一定要理解到这一点。现在呢,我们尝试去访问一下record里面的数据。哎,首先我把这个底下这个Rose呢给它换回来。还还是我们直接写一个,先写一个数组啊,再写一个record,然后呢,这个键的名字呢叫value。冒号A啊,写一个临时的变量A。那么接下来呢,我们给大家说一下如何访问这个record里面的数据,哎,第一种方式是通过点属性的方式,好,现在呢,我通过这个B,哎,我先声明一个变量叫A,然后使用等于号进行赋值。哎,此处呢,我使用b.name好。现在呢,我们来把A呢来放到我们的输出里面看一下结果,先把平行一下,点击submit。
06:01
可以看到现在呢,我们通过B点内呢,访问到了这个record里面的内,这个建筑队的值,哎,Tony。啊,那么这是我们点属性的方式呢,去进行访问啊,另外一种方式呢,另外一种方式呢,是通过这个中括号加上一个键名啊,加上一个键名啊这里呢,我们再写一下,我把这上面的A呢先给注掉。好,我还是先写一个A等于啊,接这个变量的返回值啊,接下来呢,我们通过C。写一个中括号,然后呢,这里要传一个字符串,比如说叫好,点击sum。现在呢,我们可以看到我们通过这个中括号再加建名的方式呢,访问到了我们的C这个记录里面的A值的值,它是是17啊,那么现在符合我们一个展示的效果。最后呢,给大家说一个非常重要的特性啊,就是我们这个record里面的属性呢,不能进行动态的访问,什么叫动态访问呢?来给大家举个例子。
07:08
啊,此处呢,我写一个变量啊,叫做key name。然后写个等于号,我呢给他一个age好,此处呢C这个age呢,我就不直接写死了,我写成一个变量的引用key name好,现在呢,我们再去运行这个脚本看试一下。你会发现呢,这里直接报错。呃,这里呢,给你展示的是说我们的类型错误,但是实际上呢,禁止使用可变的变量对我们的record的属性进行访问,是我们flux语言禁止使用的一项功能。想访问record的属性呢,就必须把这个啊中括号里面的内容给它写死,写成固定的,写成常量啊,这样才可以,否则的话呢,是不行的,好,那么这就是我们说的一个取值的方法,现在呢,给大家讲一下这个哎,如何判断两个record是否相等。
08:05
现在呢,我去写一个位次表达式啊,我写一个变量叫D等于,然后呢,判断一下啊。呃,这个B是不是等于C,好,在这里呢,把我的这个D给接过来,点击submit提交这个查询。哎,可以看到这里呢是files,也就是说B和C呢不相等啊,那么现在呢,我们再试一下,把这个name呢,把这个C的name改成Tony。啊,然后把这个C的age呢改成18啊XY这个坐标字段呢,它本来就是一样的,现在就不改它了,直接点击提交。好,可以看到呢,这个比较的结果呢,就是错。现在呢,我再给B再加上一个建设队。啊,这里写逗号,然后呢,就写一个KV,再次点击sum。
09:00
好,可以看到呢,结果又变回了files,说白了,判断两个record是否完全相等呢?主要就是看它里面的内容是否一致,现在呢,我们再来看一下这个record之间呢,能否比较大小。哎,我把这个双等号呢换成大于号,哎,可以看到呢,这里语法编辑器呢,已经开始报错了。啊,这里说这个这个对象呢,是不可以进行比较的哦,我现在呢,直接进行一下sum。好,可以看到这里呢,直接报错,呃说的呢,就是我们这个数据类型呢,不能去进行一个比较的操作。接下来呢,再给大家介绍一个位字语法啊,我现在呢,先把这个C呢,给它注释掉或者删掉吧,直接。好呃,然后呢,这个KV呢,我也给它删掉。呃,现在呢,我去声明一个新的变量叫C啊,然后呢,它是这样的一个一个语法啊,注意现在呢是BV字。
10:00
然后哎,注意这里有两个空格,我现在呢敲一些介质对,比如说A值19。然后逗号分隔啊,再加上一个,比如说这个什么吧。身高。HEIGHT。呃,然后我这个身高呢,可以写个比如说200。好,呃,现在呢,我把这个value给它去掉,我们直接把C呢扔进来看看效果。点击submit,好,再点击这个visual data,我们查看原始数据。好,现在呢,可以看到我们这个record呢,其实呃是刚才这个C对应的record,哎,但这个C这个record声明的时候呢,并没有按照啊原先的这个仅含的建设对的方式呢去声明啊,我们加了一个位置语法,我们可以看到它起到什么效果。哎,首先呢,可以看到我这个C呢,这个record,哎,它里面有一些name Tony这个字段,哎可以看到,但是我这里呢,并没有直接说明name Tony,而而是使用了B位,然后再看这个age的语法。
11:08
哎,再看这个age的结果。啊,那么可以看到呢,我原先的B里面的age是18岁,但是我现在的这个C里面呢,我写的位age呢19岁,那最后的结果呢,就是age为19啊另外呢,可以看到原先的B呢,我们没有has这一个属性,现在呢,我们有了has,而且呢值为200,现在呢,回到我们的文档啊,给大家做张图,可以把这个事情都说明白。呃,那么可以看到这个里面呢,C是我们的旧有的一个record,然后A呢,是我们的新record,在声明A这个record的时候呢,我们使用C加一个位和一堆建职队,然后现在我们可以看到,如果位里面的建职队在C中已经有了,比如说这个小名,还有这个哎,Johnny,那么现在呢,我们可以发现新的建制队呢,会把旧的这个值给它覆盖掉啊,那么原先呢,有一个ID 1123445,哎,那么我们新的位置语法里面呢,没有跟上这个ID,现在呢,相当于空白,那么我们就会沿用旧的record了。
12:17
哎,那么这个宠物呢,是我们新加的一个建筑队,哎,可以看到直接就用了新的,哎,所以呢,我这里把位置呢翻译成拓展,我觉得拓展的可能比较合适啊,就是我们可以在C的基础之上呢,拓展出来一个新的record了啊,如果名字呢啊,如果键的名字呢重复了啊,那么就使用新的值啊,那么这就是位置语法的一个效果,最后呢,我们回到了VII啊,给大家说一个这个记录嵌套的问题。呃,现在呢,我把这个AB呢都给干掉啊,我重新写一个。啊,我写一个record,哎,B等于画括号,哎,此处呢,我可以敲一个回车啊,敲一个回车哎,方便我们去进行一个,哎,更好的一个数学效果,呃,此处呢,我先声明一个建筑队叫name,哎,冒号。
13:06
然后呢,这个值就叫Tony Tony,哎,接下来呢,换到行伟输一个逗号,然后呢,我这里再输一个。键叫address ADS冒号啊,此处呢,我们去再输入一个花括号回车,好,现在呢,我们再去输入一个,比如说这个国家country country冒号。再加上一个字符串叫China chinana,好,呃,现在呢,我们其实就想就形成了一个。记录嵌套的一个数据结构,现在呢,我们可以把这个币呢,直接给它扔到这个数组里面来看看效果。好,点击提交发。可以看到这里面呢,最后还是直接报错了,哎,说这个,呃,Con的这个字符串,说这个数据结构啊,它不能作为一个列的类型啊,也就是说呢,作为我们flux语言的一个返回结果。
14:13
Flux的返回结果啊,我们说是表流,哎,但是你现在呢,可以把它当做表,哎,然后呢,这里面有行有列,呃,但是呢,它不允许你什么呀,一行是什么呀,是不是一个record的re cardd,呃,然后record里面呢,必须各个列呢,都是我们研发DB支持的类型。啊,支持的类型啊,但是我们这个啊,相当于什么呢?相当于这个record里面呢,某一个字段,它又是一个record类型,那么在我们这个表这个数据结构里面呢,是不支持的,但是这种record嵌套呢,在我们的啊语法里面是支持的。
15:01
啊,那么返回结果不支持,但是语法里面支持,哎,你就不要觉得这东西呢,没有什么用啊,他呢其实可以用来做我们Jason啊,做我们HTTP请求的一个Jason的数据体,那么现在呢,可以给大家演示一下,呃,我这里呢有一个Jason incode函数,现在呢我们用调用它jason.in codede。好,接下来呢,哎,我们需要一个名称为V的参数,把呢,把这个B呢直接传进来。然后呢,我用C接一下,哎,又等于好把C呢传进来。呃,点上me。哎,可以看到这里呢,就是说我们这个拜次类型呢,哎,不能被展示为一个。啊,111个数据列啊,之前给大家说过这个base呢,不能直接当做一列来使啊,那么现在呢,我们套一个叫。String吧,直接把这个字,直接把这个字节序列呢转成字符串STRG,好诶给一个V好括起来,点击上面的提交,哎,把这拉开。
16:09
哎,可以看到我们现在呢,一个record类型呢,直接被我们转成了一个符合Jason数据格式的啊,那么一个字符串,现在有了这个呢,我们就可以去发哎post请求了啊,之前呢,给大家展示过,就是我们这里面有一个HTTP.post。哎,可以看到这里面呢,就需要传URL data,那么这个data呢,其实就可以把我们的Jason放进去。好,那么这就是record嵌套的一个作用啊,虽然说啊,我们的这个Fla脚本呢,Flux脚本它不能直接返回这个嵌套的record啊,但是呢,它另有别的用处。啊,那么这里呢,再给大家说一下这个嵌套的record呢,我们如何去访问它的属性啊,其实呢,我们可以链式调用,比如说啊,此处我声明一个变量C,那C等于b.address再点哎可以点下来,哎,点这个country。
17:00
Country好,现在呢,我去提交一下,可以看到我们现在呢,通过这个链式的调用呢,先调用这个address,再调,再调用这个country啊,我们访问到了这个值叫China啊,除了这个点的方式呢,我们中括号的方式也支持,比如说我现在中括号。哎,在这里呢,直接写address,再给一个中括号,哎,China啊,这个country所用TRY。好,点击提交,哎,可以看到呢,结果还是这个China啊,那么这就是我们关于record这个数据类型的一个全部用法。
我来说两句