好,我们来看一下这道面试题,因破它它有几种用法,我们可以说有三种,但是严格的来说呢有四种,我给他们详细的来讲一下, 我在这里呢已经给他们写好了,势力啊,来,我在这里呢有一个优色的一个这样的病,然后呢有一个配置类去扫描我当前这个包,然后呢我们从容器当中正常肯定是可以拿到当前这个病的,对吧? ok, 那么现那么现在呢 我们输出一下这个优势啊,我们输出一下这个病啊,代表他确实拿到了,但是如果没有拿到他早就报错了,他肯定 拿到了,好吧,输出一个东西, ok, 说明呢这个优色已经拿到了,那么现在呢我们不用这个孔泼呢的方式呢,来给他注入到 ioc 容器当中,我们呢采用音破的的方式,我把这个注解给他去掉,然后呢我们采用音破的 强音波的呢,我们来 填入这个优色的克拉斯来,我们来运行一遍, 我们发现他也给我们注册了一个优色的这样的一个病,对不对? 神奇不?我不知道同学们之前有没有用过啊?当然也可以呢,为我们去注册配置类,如果注册的是一个配置类呢, 他也会帮你正常的解析,比方说我这里呢注册的是一个 b 二,然后呢我比方说我在里面呢去给他配置了一个 bius, 有事 备胎牛一个有色, 这里呢要帕布里克, ok, 然后呢我们呢可以给他呢因破头,我们的刚刚的那个配置类也是一样的来运行, 对吧?也是可以拿到的,所以说这 就是音破它的第一种用法,直接指定你需要就是说导入的那个类,好吧,这是他的第一种用法。 第一种,第一种就是直接指定类,好吧?直接指定类,那么如果他是 配置类的话,会按正常就是就配置类怎么解析,他就怎么解析,知道吧?会按配置类正常解析, 那如果没有任何的注解,如果是个普通的累 就呢,按照这种就 会把它就会解析成病,好吧,就是解析成一个病而已。那么这是第一种方式,直接指定一个类啊,不需要任何的操作,好吧,好,那第二种方式呢,我们可以点进来 他这里呢就提供给我们了。第二种方式呢,你需要去导入一个实现了音 potsex 这个接口的这样的一个类,那么在这里呢,我就已经提前帮同学们写好了,你看我这里有个类,他实现了音 potsex, 对不对? 那么我就可以怎么样呢?我就可以通过数组的方式呢,给他返回一个类的完整类路径,比方说我要 注册一个优色,那么我就复制他的一个完整类路径,然后呢最终返回一个死俊类型的数组,那么这样呢,也是可以注册一个优色的病的, 那么我们来改一下刚刚的那个硬破的,刚刚是导入这个配置对不对?那么如果我现在不导入任何东西啊,他肯定就会报错,他肯定就会说找不到这个优色, 他肯定会把我弄杀死并对分离神,哎,没有不好,我靠,直接打脸啊。 哦,因为我们这里有个,我们这里有个孔夫格瑞森,然后我们当前指定的扫描包呢, 是当前路径,所以他会扫到当前的这个配置类啊,所以说我们把这个这个都给 注视掉,好吧, 哎,那么现在运行的话就会爆,找不到优势了,对不对? no 萨驰并对分离是, 那么我们现在呢,就通过音 pot 来导入,我们刚刚实现了这个音 pos, 来个特导入这个,好吧, 导入我们刚刚的这个类,买音破的史莱克特,我们来定型。 好,我们可以看到刚刚我通过这个阴坡的史莱克特给他注册了一个病,是不是就已经生产了呀?就就已经获取到了,对不对?那么是这种方式, 这种方式呢就是通过 mpots max, 那这种方式呢,可以一次性的注册多个,也就是呢返回一个死俊类型的 数组,好吧,那每一个值呢?就是类的完整类路径, 好吧,这是第二种用法,那第三种用法呢?也是一样的,我们再进入到这个音破的 到这里呢,说还有一个音破的并低分呢,是 resty, 这个呢,就是你需要去实现一个这样的接口来,我同样 这个类呢,也给他们写好了,你在这里呢实现一个这个接口,但是你需要自己呢,通过这个并定义的注册器自己去注册一个并底分离审,那么我在这里呢就创建了一个并底分离审,好吧,他的类呢,就是优色, 这里呢,首先你需要创建一个病的分离神,然后调用这个病的分离神的注册器,点 redows 的病的分离神进行注册,好吧,也要注视吧, 注册并定点分析分析,这里呢是创建一个并定点分定式, 那么 surme 底层呢,他就会根据我们当前这个病的分离审去帮我们换件当前这个病,那么我们就可以获取到了, 来我们来测试一下,那么现在我同样的把这个音破的呢换成这个,好吧?音破的并蒂芬妮笋瑞,主要是他也就是可以通过一个并蒂芬妮笋的注册器来进行注册的这样的一个接口, ok, 我们可以看到这个右侧呢,同样的也可以正常的获取到,对吧?这是第三种用法,通过他, 那么他呢,一样的也可以一次性的注册多个,对吧?但是他呢是通过 通过病的分,你是 redex r egst i y 注册器来动态的注册并 地分离审,你一定要知道这个病地分离审他是什么东西,怎么玩你才能知道怎么去用这个扩展接口,对不对? 好。然后呢第四种,其实第四种呢,按严格来说呢,是第二种这个硬破的史莱克的衍生出来的,这个硬破的史莱克的呢,他有一个,他有一个子接口,我们可以看一下, 他有一个子接口叫做 dfrit empots like, 那这个呢叫做延迟的导入选择器, 他跟音坡的史莱克有什么关系呢?主要是顺序的一关系,好吧,来我们继续再来导入一个, 那么这里我也是给他们写好了,你需要呢去实现这个 dfrit 音 pold slax, 他的,他的这个副接口呢?他的这个副接口, 我们可以看一下,他的这个副接口就是英破的史莱克特,所以说呢, 你说三种也没有问题,但是严格的来说呢,他也算一种,好吧,因为为什么我要把它额外的区分出来呢?因为 supreme 他的一个自动配置类其实就是用的这种方式。 好吧,那么这个也是一样的,返回一个十分类型的数组,但是他的用法呢其实更灵活,我在这里呢就不详细的去讲了。好吧,你如果看十分布的的原码你就会看到它里面呢有一个分组的特性, 我们在这里呢就不详细的去讲。一样的也是跟音坡的史莱尔一样的哇,也是一样的 也是一样的。好吧,一次性的可以注册多个, 然后返回一个子坠数组,但是他们之间的区别呢? 区别就是 b fr 的他的顺序呢?更靠后, 他是所有病低分离审。呃,我想一下,除了我们之前有一个面试题,我不知道同学们有没有从按照顺序从上面开始听讲。我之前给他们讲到过一个 叫做病低分离审的加载顺序,那么还记得吗?我们之前说过 哦,不是这个哪个?这个就是病低分离审,他的注册顺序他是由什么来决定的?这道面是题,不知道同学们是不是还记得啊,我们之前说过这个 并的并定义的注册器的后置处理器呢,他是最后一个对吧?如果你要加上这个的话,他其实是在这个位置,好吧,是在这个后置处理器的这个位置。 ok, 所以说这里面还有很多细节,是吧?所以说我之前一开始第一节课我就跟你们说过回回答这种概念性的,原理性的面试题呢,没有一个百分之百的标准答案。你主要是呢要把 那些关键点,把面试官想听到的一些关键点你给答出来就行行行了,就比如说这里虽然有四个,你能说出三个就够了,但是你还能说出这个迪夫来的英婆,英婆的死来客的就已经够了,对不对? 那么他们的顺序呢?就是这个 d fr 的音坡的,萨拉克的呢?他的顺序是是 靠后的, 为什么要靠后呢?我在这里就不详细的去讲了,同学们有兴趣可以听一下徐书老师讲的 supreme 的一个原码, 在那个里面呢,你就能得到答案,好吧,因为 siri 不得,他就是用的这种方式,他为什么要靠后?在那个里面就能得到答案,好吧, ok, 我给同学们 证明一下吧。好吧,给他们证明一下,他确实确实靠后了。来,我们同样的复制一下他的完整内路径,就是你需要注册的那个并的完整内路径,然后呢,我们在这里给他配置一个并,好吧, 配置一个病,那么现在呢,就有两个优色这个病了,对吧?我们现在导入的就是延迟的,延迟的这个音破的史莱克的,我们来看一下,那么我们导入的这个优色呢?肯定是在他的后面的, 好吧,我在这里呢,我就不得到这个优色了,因为根据这个类型得优色的话肯定会报错,他肯定会得到两个优色,你看对吧? 哎,没有吗? 这不应该,我看一下,这里不是配置了一个吗?哦,他说有两个把他方的吐,对不对?我刚刚怎么没看到这个异常在这里对不对?把他他方的吐找到了两个,所以说 你这里不能这么测啊,你这里呢,我们得输出他所有的病敌分离绳来看一下, 我们来循环 来走你。 ok, 我们可以看一下,这个是他的一个病的名字, 其实就是我们刚刚返回的这个数组的一个完整类路径,他会把这个呢当做成你的病的一个名字,知道吧? 所以我们可以看到他的顺序呢,是在你配置的任何一个,无论你是使用的。好吧,只要不是我们之前所说的那个并定义的注册器的后置处理器, 能明白吧?反正他的顺序呢?他的顺序是在最后的,但是要比这个病地分离审注册器的后置处理器要靠前。这这等起来等下又又怎么又晕了。所以们你们呢,只需要搞清楚 还有哪几种用法,好吧,就四种,或者说你说三种问题也不大好吧,哪三种?一种呢?直接指定类,然后呢?通过 inpods like, 通过这个啊, inpod 的。
粉丝4.8万获赞5.0万

今天来讲一下,今天来讲一下阿迪尔怎么自动导入内,就是音破的内自动生成,这个音破的内怎么自动生成? 首先就是稍微讲一下理论,然后再讲实操,就是我们为什么要开启这个功能,因为这个,因为这几点就是手动敲弹嘛,还需要手动写这个音破的还麻烦,然后无用的这个音破的还需要手动删除麻烦, 然后复制粘贴的代码,可能需要手动删除这个很多赢破的内,或者要手动删除未使用的赢破的麻烦, 开启这个功能之后大大的提高开发效率。然后怎么自动破的内呢?先看下这个截图,直接就是勾选这两下,勾选第一下表示这个可以自动 添加,就是自动生成这个已破的这个代码,然后高线第二项表示可以自动删除未使用的导入类,这两行的这个配置就是这个意思, 然后位置的话是在这个设置上 ad 的 o 图自动导入这里,然后我们来看一下演示效果, 这个是自动音破的内,先看一下截图,我们现在就是手动敲完这一行代码,然后上面的这两个音破的这个历史的 ov 历史的全部都会自动生成,不需要手动去敲这个音破的代码, 这是第一个,然后第二个他会自动删除未使用的音破的,比如说我手动敲一下这个音破的这个宁可的历史的,然后在最后输入这个分号的时候,他会自动的保证银行单码 删除,因为大码里面根本都没有用到,所以就是不需要,也就是说只要大码里面没有用到,他在上面音破的就是全部都会自动删除,本质其实就是避免程序员,然后你自己去写这个音破的,就是你写大码的时候,他这个音破的就自动的生成的。 然后另外一点就是你如果是从外面复制粘贴过来的大码,然后有的很多就是没有音破的, 他也会自动删除这个音破的,然后还有很多废弃的就是为使用的这个音破的,他也会自动删除。好,我们来实际的演示一下,现在就是把这三个全部都删除,先注视掉吧, 先把这个注视掉,这个是我之前写好了,然后现在假设我写了一行代码,其实就是把这行代码就是放开,然后这个就自动生成了, 就自动删成这个音破的。然后如果,如果我是手动音破的一个新的这个类, 但是这个内未使用,只要我敲完这个分号,他就会自动删除,因为大码里面根本都没有使用,然后我复制粘贴的时候就是也是一样的,就是会音破的大码里面使用的内就不需要自己去敲音破的,然后未使用的内他也会自动删除, 然后这里的话是完整的这个官方文档参考可以瞄眼,这个是自动导入,就讲的怎么自动生成这个音破的,怎么自动的,就是删除未使用的音破的,这里全部都有详细的介绍。好,谢谢。

好,接下来我们讲导入,导入类用 import import。 呃, import 呢?在单词里边当然是什么?进口啊,出口的意思是吧?呃,进口的意思是吧?我们的 import from pineapple 从中国进口, 然后呢,这个他有什么作用呢?就是说如果我们要使用其他包的类,我们就需要使用 inpot, 这样的话我们在本类里边就可以直接使用了,不然的话,否则的话我们就只能写完整的包名和类名, 这是什么意思呢?现在回到我们的项目里边,大家看在这里边呢,哎呀,这这两个是同名的啊,然后大家看啊,现在 我们在这个 test 下面我再建一个类,叫 test in box 啊,看,顾名思义是吧,用来测试我们的导入的。 好,来大家看哦,现在如果我要使用啊,呃, past, 来咱们的 op 这再建,再建一个类,嗯,建个类叫什么类呢?叫 car 啊,汽车类。 呃,汽车类里边啊,啥什么都不用写吧,就是空的。大家看哦,现在我这个里边呢,如果我要使用另一个包下面这个卡我该怎么用?我需要这么写, ig 百战点啊, op 点看到没有?我需要这么写啊, new come 点什么 含金百战点,这个多皮点啊,就这么写,嗯,对吧,这种代码很酸爽是不是?哎,我们如果这个路径更长的话,你会发现这写吐了哈,对不对?如果我要使用,比如说我要使用 stree, 我们当然可以这么写, 使劲啊,使劲,但是我也可以这么写啊,加入点烂对吧?点使劲是不是? 大家看带上包名的话,我们可以通过他可以找到我对应的对应的什么?对应的泪,但是大家看脸上这样不方便, 是不是太不方便了,太不方便了,如果代码都这么写的话,我估计程序员的头会更少, 怎么办呢?好,我们进入导入,导入怎么写?看 他还可以,这是位于第一句啊,我们下面啊,这个注可以在这个注视后面或者注视前面都可以,注视后面一般是在在这 inpose 啊,我要使用哪一个类?比如我要使用这个卡,那我就把这个大脑导入导入进来就可以了。 it 百战点什么 op 点卡, 大家看,如果我这么写了以后我就再也不需要这么写了,我要用的时候呢?我只需要干嘛 啊,对吧,如果我还要再扭,对吧,再扭呗, 看懂了没有?这个没有任何的影响来,我可以反复的去写,这就是导入的好处。好,来回到我们的文章里边, 从下说有这样两个注意点,大家注意一下哦,这几个注意点,首先加瓦会默认导入烂包下所有的类,这些类我可以直接用,就像咱们前面用的什么用死菌类,死菌类我从来都没有导入过,是不是可以拿来直接用? 是不是啊,这是为了为了放,因为它里边都是非常非常常用的类,我们可以拿来直接用。然后呢,如果,如果这个导入了两个同名的类,那就只能用包面加类,面如万一啊,万一我们 在写的时候呢,导入一个卡,我另一个包门下面也来一个卡,哎,这两人确实怂了,怎么办呢?那你就老老实实的把报名写上,因为这种情况不多见,偶尔会碰到这种偶尔会碰到的情况, 那就我们就用最笨的办法以示区别好不好?最笨的办法以示区别。 ok, 就是这种方式啊。把报名写全了啊。好,继续说。呃在咱们这呢给大家做了一个视力啊,就是我们导入这个,我这就不是了啊,还有一个小细节啊,比如说我要 这个导入一个包下面所有的类,看我可以写个点心。 写个点心什么意思啊?呃。他会导入该包下所有的类,会降边翼速度但不会降低运行速度,所以这无所谓的。写心的好处是什么呢?你不用比如我这个包下面很多类都要用啊,你就不用看到底是谁了,直接点心全用了编意速度降低 运行速度不会奖励。因为为什么呢?因为实际上最终用的时候呢,比如这里边这这下面有二百个类,我并不会导入二百个,实际上编辑会检测我这到底用了几个。用了其中了三个我还会,我还会什么呢?只写其中三个 好不好?所以他变异速度会降低,但是他运行速度没有任何的变化,所以呢像这样的这个我就直接粘过来了。 这我们可以这么写。好吧。但是呢这是灰色的。为什么呢?是因为没有没有用到里面的任何的类啊,我们可以用用到里面的一些类啊。呃比如说什么类似的,对吧?那这后面要学的后面要学的。这个容器啊容器的类 其他的这些这这些我就不试了,大家自己试吧。啊这个可敲可不敲就大家理解了。怎么办?理解了导入同名类该怎么办? 我们就只能用什么?用包名前面把这个包名写全了。好吧前面把这个包名写全了,这个代码其实,嗯, 我就把这个例子删了,没什么用。其实好,下面还有一个,我现在就删了,大家不用太看了啊, 因为我已经把那个刚刚那个,呃,这个也说清楚了啊,如果重复的话,大家这么写,然后心也给大家放到这个单位就可以。 然后还有一个小内容,叫什么呢?叫静态导入,叫 standing board 啊,那这个什么意思呢?呃,一点五之后新加的,现在你估计也碰不到一点五之前的了,所以就我们就直接说吧。呃,作用,它的作用就是什么呢?就是用来导入指定类的 静态属性静态方法,这样就我们就可以直接使用了。我们可以直接使用静态属性静态方法什么意思呢?大家看一下我这这个代码 import 屁股后面加了个 static, 然后大家看 加入点烂点 mass 点心,这是一什么意思呢?导入 mass 下面的所有的静态的属性,静态的方法我就可以下面直接用了。比如大家看以前我们是不是敲 mass 点儿软的嘛,有了它以后呢,我 master 就不要了,直接写软的, 好吧,哎,可以写点心,或者你想导入哪个写哪个点派,这样都可以,这个咱们可以。 哎,对啊,放到这来,比如我在下面 使用啊,使用我的什么呢?以前我们是比如要用要用这个派,是不是 mess 点派啊?现在不用了,我这输入的派就行了,我就知道啊,是他的派,是不是?然后呢,我还可以不用什么呢?比如 mess 点儿 random, 咱们以前是不是这么写啊? 是不是现在我可以也可以不写了,直接乱等?为什么呢?因为我这点心啊,他里边的这个都倒过来,对吧?我可以单单看,我可以单击右键,单击左键,按住 ctrl 键点击,他,看到没有?这是他的代码,我可以看他的代码。然后呢? 大家看奥特加七啊,奥特加七呢?可以看这个这个类的一个结构,大家看这左侧左下角,这全都是他的方法, 看到没有?那全都是他的一遍方法啊。大家可以看到他这里边的方法大多数都是什么,都是 static, 看到没有?都是 static, 我们可以直接。直接什么呢?静态导入,也可以直接使用,好不好? 错了,好,这是关于导入的一些基本的语法啊,同学们呢?把这个测试一下, 知道这些语法就可以了。后面我也是那句话,离都离不开,天天在要我们建议任何这个项目都是包几个,都是很完整的。

哈喽,大家好,我是老杜,今天和大家分享 id 工具的一个使用技巧啊,什么使用技巧呢?就是在 id 工具当中怎么开启我们类的自动导入,就是音炮的语句,我们以后可不可以不接 我们来看一下啊?怎么做?首先呢我们把这个系统设置窗口打开,在这里呢输入 out to in part 自动导入,这个时候呢我们点中他之后, 这里呢有两个复选框,把这两个复选框选上,第一个复选框表示什么呢?表示自动导入,第二个复选框表示什么呢?哎,对我们导入类进行自动优化,该删的删,该加的加,就这意思来应用,点击, ok, 那么这个时候我们来输入啊, scanner 空格,你看它自动就把这个类导进来了, 然后呢我们扭一个什么呀? s 好了,那么这个时候呢,我们继续往下,比如说我们扭一个什么呀? lv 累死他,来我们加一个封号,你看它自动就倒进来了,对吧?如果我们把这两行代码删掉的话,哎,它上面也会自动删除,非常的方便。

这节课来讲 id 二的使用, id 是一个常用的加瓦集成开发环境,先把它理解为是一个编写加瓦代码的工具就行了。首先得先去下载安装它,这里提供了一个链接,大家可以直接去下载,里边也是从网上找的,按照说明安装就行了。 首次打开是这样一个界面,可以直接去创建项目,也可以先配置一下,按照这个菜单打开,把 gdk 配置一下, 点击这里面的加号,把安装的 gdp 的滤镜选出来,就会加载到这里,点击应用,再配置项目的 gdk, 在这里选择刚才配置的 gdk, 点击应用, ok, 就回到刚才的界面来创建一个新的项目,创建一个 普通的加瓦项目,点击下一步继续往下,给项目起个名字,点完成就可以了。创建好以后是这个样子, src 是原文件目录编写的,加瓦代码都在这里, 右键挨杀器,可以新建包和加班类,但是还有很多其他文件来看。创建好的项目,在这里创建了一个类,在这个类里来学习下 id 常用的一些操作。看代码定义一个自断, 给这个字段添加 galacea 的方法,右键选择 generate, 下面 生成构造方法,给他写点方法确定,这样就自动生成了,不需要手写。想撤回呢,键盘上 ctrl 加 c 就把刚才的操作撤回了,那还想再恢复过来,看这是幸福的佳瑞 又往前进一步恢复过来了,要复制一行, ctrl d 直接改就行了,性别想要删除这一行, ctrl y 生成闷方法, psvm 回车,省的敲了定一个列表,利死他。 这里面有提示,把这个力倒进来, out 加 nt 打入内是不是很方便?看出外,把它删掉。 要查找某个关键字,看重 f 内蒙要查找的就高亮了。还有很多其他的快捷操作, 大大的提高了开发效率,其他的功能都会在以后课程中慢慢使用。到这节课就到这里。

ibr 的基础配置,新手小白赶快收藏!

哈喽,之前跟大家分享过了一个关于 stream 流和拉姆达表达式以及函数值接口的视频,然后呢有的小伙伴就在评论区留言说用 stream 流的这种形式啊,就是编码一时爽,然后调试火葬场, 那真的是这样吗?那我今天呢就跟大家分享一个代码的调试神器啊,比如说我们来看这样的一个代码,我们先把这样的一串数字啊,放到 off 这样的一个啊参数里面,然后呢我们去过滤,过滤出大于十的一个数,然后呢我们再把它映射成乘幺,就是映射成一个两倍 啊,然后呢我们再给他去除,再排序,再转换成数组,那如果说你用平时复循环的一种写法呢,他可能就会有很多层的一个欠套,对吧?那如果是用流的一种写法呢,一行简单的这样的一个代码我们就可以实现,那我们来调试一下,那那些说调试火葬场的一个小伙伴啊,就是意思 就是说我们用 skin 流的这种写法呢,我们没有办法看到他每一步的一个变化是什么样子的,那真的是这样吗?我们来点 bug 一下,点 bug 之后呢,我们会看到这边有一个这个按钮, 这个,然后呢我们点击一下,那我们来看一下啊,那这边呢就是我们的一个原数字,那我们点一下 future, 那他这边呢就会自动的给我们筛选出大于十的一个数字,我们再来点一下 map, 他就会自动的给我们那个数,呃,那些数字呢给他乘以二,然后我们再去重,然后我们再去排序, 排序之后呢他就会给我们按照一个顺序排列,最终呢我们转成数组,那其实我们这样每一步的一个执行过程我们都能够去啊,看的非常的清楚,是不是很方便呢?那所以呢,我并不是很赞同他们的一些说法, 工作很多年的一些程序员呢,他们都不愿意用一些 string 流的一些写法去写,那其实我觉得作为一个程序员,我们就应该不断的去拥抱变化,对吧?然后呢不断的去提升自己,不断的学习。大家如果说想要我之前的一些 demo 的话呢,可以到这边来 这边,然后呢给他去发一个消息,像这样就可以拿到我们的一个 demo。 好,今天的一个分享就到这。

adiomen 依赖分析工具,这里有一个视力代码是操作 excel 的工程,引入了阿帕奇的 pua 和阿里巴巴的 ecexl 两个依赖文件。呃,我们运行工程可以发现汇报一个 no class deform 内找不到的一个异常,然后这里主要是因为驾包冲突了,导致,这样会找不到 类的错误。我们可以看到阿里巴巴一 z 一个要导入的是二点二点八,其中他引入的驾包我们可以分析一下,然后选点开 maven, 选择右键点 analyze dependencies 分析依赖。然后我们在这边可以看到 这有几个黄色的感叹号,表示有冲突的,我们下滑。可以发现 pua 三点一点一,零点一是有冲突的。 eceasel 中它使用了更高的三点一七版本,而我们引入的 pua 是 三点一零点一版本,根据最短路径原则会优先导入三点一零点一这个版本, 所以三在三点一零点一中,我们需要的类没有被引路进来,所以 ezx 要汇报,这样找不到一个类的错误,我们可以看 看到,在这边我们可以点击直接显示有冲突的类,可以看到这边,嗯,但是艾利亚自带的这个依赖分析工具没有这个直接 exclude 排除掉这个异常, 嗯,然后我们有一个插件可以帮助我们更好的去处理这个异常,他是 插件,我们可以在哈利根词的应用市场中打开。这边已经安装了 melvin kipper, 嗯,安装之后呢,我们可以看到在这个破木文件底下,这边就是,呃破木文件对应的 声明,然后这边有一个依赖的分析,这就是插件慢慢 hoppo 的界面,我们可以看到这边可以选择依赖冲突的选项,然后我们可以刷新一下这边就有三个表示有冲突的,我们可以看到 右边红色的部分,就是有冲突的部分啊,这个是我们需要解决的一个冲突,因为他在这个家包里面是包没有找,找到累的异常,我们选择,然后右点击右键, 再选择 exclude, 把这个排除掉之后我们再回到 taxi 页面,我们可以看到 meng kipper 这个插件帮我们直接生成了这个 exclusions 这样的一个排除这样的一段声明,然后我们去到 这边再重新需要软弱的一下这个版本,好,等他执行完成之后,我们可以再次运行。哎,稍等一下,好,他刷新完了,然后我们再次运行这段程序,因为这边是没有填写 呃文件名称的,可能是汇报另外一个异常,但是已经解决了依赖冲突的这样一个问题,我们看一下执行结果, 嗯,我们可以看到, 哦,是现在是报文件找不到这样一个异常,所以说主要是一共两个 功能吧,一个是依赖分析内置的呃,依赖分析,如果我们需要自己手动写的话,可以不用安装插件,然后 matanyope 可以帮我们更好的直接手,无需手动去。


人人都能做前端导入导出,有时候开发需要把复杂的功能划分为一个一个单独的模块, 不同模块之间是独立的。每个模块开发完成后,再把不同模块中与开发需求相关的部分组装起来,最后形成完整的功能。这种开发方式叫模块化开发。 用最简单的例子演示一下,新建一个 g s 文件,把这个 g s 文件作为一个模块, 在 g s 文件中定义一个 id 的函数,用 expod 语句导出这个函数。花括号里是要导出的函数对象、原始值等 可以导出一个或多个,多个的话用英文逗号格开。把刚才定义的 i 的函数加在花括号里。 在主文件里可以用 input 把 i 的函数导入进来。使用 input 语句需要把 skript 标签的 type 属性设置为 model。 input 后面的划括号里的内容是要导入的函数、对象等,这些内容都是根据模块里导出的内容选择的。这里导入的是模块里的 i 的函数。 form 后面表示的是从哪个模块里导入的,这里是刚才定义的模块文件, 点加斜杠表示相对于当前目录。导入以后就可以调用 i 的方法,把 i 的方法处理后的值传到 c, 把 c 显示在 diy e 中保存,运行 一下, 显示一加六的结果是七, 再替换一下实际参数,把六换成七,再次保存,刷新 计算,结果变成了八,计算的是相当准确。

接下来我们开始讲这个模块的导入,模块的导入大家注意,我们有两个语句,一个叫 epos, 还有一个叫 fome, 加两个。 那么 ampod 语句呢?是用来帮助我们导入模块,把模块搞进来。 prome pos 呢,是帮助我们导入模块下面的什么呢?函数是吧?类,需要用,需要用什么导入什么?就是说 fome eampod 是用来导,帮助我们导入模块下面的内容,他呢是用来帮助我们导入模块。 咱们一个个学啊。首先第一个叫 airpote 剧,他这里边呢,呃,通过 aimpot 模块名就可以导入, 我们需要。还有的人说,老师为什么需要导入啊?很简单,你导入了别的模块之后呢,你就可以使用别人写好的功能了,这是我自己的自己的那个模块啊,我正在写的代码,这是别人的 好,别人这里边呢,有一个功能特别好,对吧?或者是我需要的一个功能,那已经写好了,那我在这呢是没必要,没有必要自己再写,对不对?我可以干嘛呢?我可以直接导入他导入呢,相当于什么呢?相当于把别人写好的,对吧?就放到我这里边,我可以直接去用, 这就是导入的一个作用。好,我们可以导 npod 模块名以及呢?你也可以一行 npod 多个模块 以及呢,给这个模块呢起个别名,对吧?起个其他的名字方面,比如这个名字特别长,是吧?或者是不好用。 那么顶炮的加载的时候呢,可以帮助我们加载这样一些内容,他不光可以帮助我们加载 我们的模块啊,我们可以加载拍摄,编辑好的代码,就点拍摄文件以及呢, 我们后面会给大家讲包,我也可以导入包以及呢啊,就是包好的一组模块呢, 包下面的一组,一会咱们讲到包的时候呢,再说啊,为了会给大家讲 以及呢就是用什么呢?用这个编译好的,是吧?变形术对不对?比如我们导入这个 max, max, 实际上呢,他去运行的时候,运行下面的一个 c 写好内容是不是? 对,也可以用来导入,我们用黑货参加加写好的一些程序,通过链接库呢进到我们的拍摄,然后也可以导入。 好,那么接下来我们看一看啊,首先注意一下,作为这个导入的话,他的本质上来讲,他的本质上来讲仍然是导入了一个什么,我们讲在拍摄里面呢是一切都是对象 对不对?所以我们当我们执行一个导入的时候,不好意思啊,我们执行一个导入的时候呢,实际上我这个模块呢,在我们的 爱在里面呢会出现一个对象,这个对象呢就用来代表我们名字叫什么名字也叫卖,所以我们一会呢大家看,比如我在道上 导入这个跑的慢死了,我在这可以打印他的什么,打印他的 id 看到没有,他的 id 是什么,也就说明我们什么,他这个导进的是是一个对象, 然后呢还有一个什么呢?太,我们可以看看他是什么类型啊,大家看这就是我们直接打的类型,有一个类叫什么猫就叫类, 然后呢我们就可以去叫什么麦子下面一些属性,好吧,他的属性呢也也是什么呢?我们这个模块里边模块呢用对象来分装起来了,加载进来了,然后呢,我通过他对象点什么下面的属性, 那么我们在使用引炮的语句的时候呢?本质上用的是什么? 你说我在这讲 a 是吧? a 下面这个符号而言,我们是不是有用算符的存在啊?实际上对应的是不是? 是不是一个叫沙滩的方法,是吧?那这也是一样的啊,看起来是一个引炮的,实际上对应的是什么?我们写好的一个方法叫看起来是个,是一个, 那我们仍然以这个为例吧。 然后呢,我们也可以在这个,你在这测试也行,或者在这我们这个 看到没有?或者是什么呢?看他的类型。 然后呢,如果我们这么写啊,刚刚我是导入了一个 nice, 对不对?我还可以写什么?多个,以后我还还要倒,什么都要倒,可以写两,可以写多个什么呢?多个 意思吗?大家看啊,我在这倒入了一次啊,大家看,我在这顶炮的一次,这有啊,出来一个对象,麦斯对象,那么我在这再又倒了一次,然后大家看,大家看他们这个是不是同一个对象啊? 大家注意有一个要点是什么呢?就是说我们在这程序里边导入另一个模块的时候呢,甭管你写多少次,导入多少次,我们实际上他只有一个,一个模块呢,生成一个什么?一个对象,不管你倒多少次, 一个模块无论倒了多少次,这个模块在整个铁石器进程内,尤其有一个对象, 他的门口呢,也只有一个, 我再看啊,再走,再 是不是一样的呀?相当于我在这坐着这样一件事,是吧?比如说 m 等于 max, 相当于把这个 m 四,这个相当于什么呢?你在这写个 xm 的时候相当于什么?相当于把这个 max 地址, 对呢, mate 二点,这么写, 好吧,咱们写个别名,这就是我们的一炮,那么我们可以看到 我在这呢引炮的 max, 以后呢,如果我要去使用,咱们要去使用这个 max 下面内容,比如我要使用什么呢?使用他这个三应函数,我就可以用什么,用 mas 多少多少, 看懂了没有? mass 是我们的模块门,因为你导入了可以用了,是不是 mase 代表他的方法,那么你要这么写,让我们解释,其实知道,知道去找谁,对不对?一说 max 我就知道了啊,是这个模块啊,下面的使用方法。 好了,这是一个关于这个领炮地区的一个基本的介绍。 好,下面还有一个是叫做 不用名字干嘛的呢?他是用 来导入模块中的成员。引破呢,是用来导入模块符号。引爆呢,可以通过服装模块名引破下面的成员,可以导入他的成员。也就是如果我们要打一个比喻的话,就是说到这的区别啊, 引爆的,导入的是模块,不让引爆的呢?导入的是模块下面的什么函数或者类,如果要进行进行大家更容易理解的话,引爆的帮助你导入的是一个文件,不让引爆的导入的导入的是文件文件下面的内容。 如果你只是领 pos, 他的话,我们去用的时候呢?我就必须用的时候。必须写什么呢?必须写,哎,模块名, nice, 不过我是这么写啊, blom max 用泡茶下面的方法,那我就可以直接什么呢?这是神教模块,我可以直接写, 永远回到这来,我在这呢, pro max, 对吧? 我们在这可以。 apple 星星表示的意思就是说我导入了这个 mate 下面所有的内容,所有的啊,让大家注意,我们一般情况不建议这么写。为什么呢?因为你写个星的话,你觉得省事,导入了所有的内容,你不知道导了什么,有可能会把你的一些内容呢覆盖 啊。比如说我在这有个变量,名字叫 m, 如果需要什么, 我需要三赢,那我在这用的时候呢,我就不需要像上面一样写三赢,我可以直接写什么, 能看懂吗?你可以直接用了,因为你是什么呢?你是导入了这个模块下面的这两,这两个,这两个内容可以直接去使用, 这就是 flome, 是吧? flome 与炮车。 那我在这呢,不好意思,我在这写了一个, 书上写了一个这个, 在这里先给大家说一下。嗯,这写了一个模块,叫凯奥克里。有爱的方法很简单啊, 加币是吧?减法定了一个什么囊波,让你累埋囊本,不是那一二三,看到没有?特特简单啊,三个内容。然后呢?在另一个模块要使用的时候呢?因为要使用的时候呢?如果你是因泡的话,那你就必须写什么模块名, 如果你直接写二的, 你在这直接写爱的方法。
