00:00
好,同学们啊,这一节呢,给大家介绍一个,嗯,我觉得应该是首先上来应该第一个介绍的函数啊,叫map函数。呃,此处呢,我给大家呢,手动的去撸一个表流啊,自己去创建一个表流reader from,好呃,接下来呢,我们去传一个参数叫Rose啊,这里呢要传递一个数组啊,这个时候呢,我们去写一个record啊,比如说就叫这个name。然后再加上一个Tony toy啊,然后后面呢,我再跟一个record叫name。呃,然后后面这个地方呢,就叫这个,呃,我们的这个杰克吧,JC好。呃,现在呢,点击提交啊,先提交一下啊,看原始数据,直接看原始数据往下拉,呃,可以看到我现在呢,其实有一个表流,然后这里面是呢,是一张表啊,它只有一个字段。呃,那么接下来这个map函数呢,我们就可以通过这个管道符啊,管道符来传给我们的map函数。
01:02
啊,这里呢,可以给大家看一下,这里面呢需要一个FN,那FN是什么意思呢?是函数的意思啊,此处呢,需要传递一个匿名函数啊,我们写一个函数。好啊,至少也可以看到现在呢,其实这里面已经啊,照这一段,哎,函数这里边这一段啊,没报错啊,说明我们这个传动性的还是对的。啊,那么这里呢,还需要一个问题啊,还需要知道一个问题,就是我们map函数呢,对它传进来的这个函数,它对这个传进来的函数的返回类型是有要求的啊,它要求呢,你可以看到这个地方。哎,他要求呢,你必须返回一个我们的这个record类型。啊,所以说这里呢,我们就去返回一个record了,比如说我这里直接返回啊,我就直接写死。比如说name,哎,叫这个就就叫Tony吧,啊TONY2。啊,你会发现这里报错,这是为什么呢?你会发现这里说是呃,少了一个return的语句啊,我们之前不是给大家说,我们说如果是你这个一行代码的话,你不用写return吗?啊这里需要注意了。
02:11
好,呃,此处呢。其实是因为有了语法歧义啊,我们知道我们声明record呢是用一个花括号,但是在函数这里呢,啊,去传递一个代码块的时候呢,也是使用花括号,所以说这个语法判定呢,就是说你这个花括号呢,被当做这个代码块的一个开始和结束标志了,而不是我们的啊record的这个声明符,这时候怎么办呢?你这时候只能这个将错就错,Return啊,敲个return re ton,然后在这个建度上再套一个代码啊,再套,再套一个这个画括号。呃,他呢,就会认为这里面这个是我们的record的外面这层花括号呢,是一个,呃,我们说的这个代码块,呃,此时你会发现这个就很别扭,所以说呢,有一种更方便的切法,其实就是用小括号。
03:08
啊,我们知道小括号在我们的这个代码里面呢,可以去提高我们呃,一个某个代码的一个啊执行的优先级,同时呢,它也可以方便在我们的函数里面消除这个花括号的歧义,好大家可以看到啊,现在没有问题了。点击提交,呃,你会发现呢,我每一行数据呢,都变成了TONY2,所以说我们现在呢,还没有给大家讲这个map函数什么意思,所谓map函数,它其实它是干什么的呢?它其实就是便利我们的表流里面每一条数据。哎,所以说呢,它会先处理我们的,呃,第一个record了,呃内呢是Tony,然后呢,再处理第二个record了,内幕呢是杰克啊,此时呢,我返回值是一个恒定的常量,所以说呢,不管是Tony还是杰克,我都返回TONY2,哎,所以说这个时候其实我们可以去写一个if else函数,来让这个逻辑呢更加的有趣。
04:09
哎,这里呢,我去声明一个代码块。好,掐回车。呃,此时呢,我们返回一个return,然后去写一个if then else,比如if。啊,通过这个二呢,呃,一个中括号来取这个record里面的值,比如说它的名字,如果是Tony。啊,那么我就反问什么呢?Z,然后我写一个record。内幕,然后就说啊。Tony不是杰克对吧,然后如果呢,不是Tony啊,写一个艾斯。然后这里呢,我就直接去再去写一个这个啊record类型。啊,这里呢,就直接写一个。Name,然后冒号,哎,杰克不是托尼。
05:04
啊,这里呢报错,我们看下为什么。啊,他说的是这里面出了一个问题。The else是因为我们的else语法没有写对吗?啊,可以看到啊,这个L所拼错了,应该是else,好啊,弄完之后呢,还会报错,是因为我们再看一下。呃,Missing label name啊,因为我这里这个啊,这个键之对呢,可以看到这个键呢,是name不是下划线name啊,它这个下划线一删啊,这里呢,还有报错,就是Tony呢,它应该是个字符串啊好,现在呢点击提交。哎,可以看到我们的这个map函数呢,根据我们这个每一行的值内容的不同呢,做出了不同的反应,原来是Tony的这条数据,现在变成了Tony,不是杰克,原来杰克的数据呢,变成了杰克不是Tony啊,所以说这就是我们map函数的一个用法,后面的这个课程呢,我们会呃,使用这个map函数呢,去做一些基本的操作。
我来说两句