当前位置: 首页 > news >正文

成都网站游戏设计哪个网站可预约做头发

成都网站游戏设计,哪个网站可预约做头发,wordpress延迟加载,东莞市机电工程学校网站建设与管理并不全,记录了一些流程和注意点。新项目建议直接用zio2! 首先,从1.0迁移到2.0,可以使用官方的scalefix规则完成一部分方法自动替换(迁移主要解决方法重命名,去掉Has)。 然后,添加依…

并不全,记录了一些流程和注意点。新项目建议直接用zio2!

首先,从1.0迁移到2.0,可以使用官方的scalefix规则完成一部分方法自动替换(迁移主要解决方法重命名,去掉Has)。

然后,添加依赖到plugins.sbt:addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "<version>")

然后,执行迁移:sbt "scalafixEnable; scalafixAll github:zio/zio/Zio2Upgrade?sha=series/2.x",这会完成大部分关于方法名的重写。
比如:之前含有effect的方法被重写为带有attempt,带有M的被重写为带有ZIO

不过仍有一些方法是被删除的没有修正,或者遗漏的一些方法没有被重写,需要自己手动改了,基本不需要什么大的改动,删除的方法可以在官方迁移文档中找到,实在找不到可以到discord频道询问。

接着更新zio办法到2.0.0即可。这里不用直接更新到最新版,这样可以保证迁移是最小改动,迁移后再升级即可。所有生态库也需要升级,如果有的生态库不支持,就暂时不能升级。

对于业务系统,当我们执行上述命令后,其实我们已经完成了大部分迁移。最后,我们应该尝试编译项目,修复剩余的编译错误。通常这步必会报错,因为由于2.0已经删除了Has、ZEnv、ZManaged,迁移规则也并不是完善的。
执行迁移命令后,Has被直接删掉了,代码看起来更清爽。

在删除ZManaged后,官方发现迁移工作可能非常庞大,后来出了个过渡方案,允许暂时不迁移ZManaged,但是需要导入一个中间包:"dev.zio" %% "zio-managed" % "<2.x version>"

zio2全部使用Scope,所以ZManaged本身不在核心库了。如果打算直接迁移,把ZManaged[Any, E, A]改成ZIO[Scope, E, A]即可。同时把resource.use(f)改成ZIO.scoped { resource.flatMap(f) }
之前ZManagedacquireRelease相关方法都已经在ZIO中,toManaged_也需要删掉,返回的R类型多出一个Scope,返回类型从ZManaged[R, E, A]变成ZIO[R with Scope, E, A](此时需要ZIO.scoped()才能使用)。

Clock、Console、Random、System这些基础Layer已经移动到顶级包下面,需要改导入语句。

个人认为变动最大的是Transducer:拿一个zio-redis解码器举例,它在1.0中是这么写:

  final val decoder: Transducer[RedisError.ProtocolError, Byte, RespValue] = {import internal.Stateval processLine =Transducer.fold[String, State](State.Start)(_.inProgress)(_ feed _).mapM {case State.Done(value) => IO.succeedNow(value)case State.Failed      => IO.fail(RedisError.ProtocolError("Invalid data received."))case other             => IO.dieMessage(s"Deserialization bug, should not get $other")}Transducer.utf8Decode >>> Transducer.splitLines >>> processLine}

到了2.0是这么写:

  final val decoder = {import internal.State// ZSink fold will return a State.Start when contFn is falseval lineProcessor =ZSink.fold[String, State](State.Start)(_.inProgress)(_ feed _).mapZIO {case State.Done(value) => ZIO.succeedNow(Some(value))case State.Failed      => ZIO.fail(RedisError.ProtocolError("Invalid data received."))case State.Start       => ZIO.succeedNow(None)case other             => ZIO.dieMessage(s"Deserialization bug, should not get $other")}(ZPipeline.utf8Decode >>> ZPipeline.splitOn(internal.CrLfString)).mapError(e => RedisError.ProtocolError(e.getLocalizedMessage)).andThen(ZPipeline.fromSink(lineProcessor))}

这里ZTransducer被重写为了ZPipeline,并且使用方式有些变化,不是改个名字就能编译的,甚至调用方还需要略微改动。

现在ZSinkZStream都是基于ZChannel实现,现在设计更合理,解码器decoder是由输入流经过ZPipeline处理再到输出: ZStream => ZPipeline => ZSink

相比之前的ZTransducerZPipeline更容易理解。同时ZTransducer并不够通用,在流式解码中性能并不好,所以被弃用了。

http://www.yayakq.cn/news/399763/

相关文章:

  • 对于给不良网站发律师函如何做深圳公司车牌怎么申请流程
  • 泰安建站哪家好柳州网站建设哪里有
  • 学校网站建设与管理办法前端性能优化有哪些方法
  • 网站域名改版石家庄谷歌seo
  • 网站标题psd建筑网站翻译编辑
  • 网站建设如何算成本0453牡丹江信息网二手房买卖
  • 网站设计制作 一年价格我的个人主页模板
  • 淮北 网站建设 有限公司WordPress显示网站加载时间
  • 北京怎样做网站推广嘉定建设机械网站
  • 石家庄外贸做网站个人博客网页模板
  • 怀安县网站建设提供网站设计服务商
  • 唐山网站建设报价页面模版 公众号
  • 做模板网站怎么放视频教程快速排名优化公司
  • 简要说明网站建设的步骤网站开发软件中文版
  • 河东做网站的公司自己制作网站做外贸赚钱吗
  • 兰州网站seo外包设计制作效果图
  • 网站建设 接单seo网站排名助手
  • 上海平台网站建设哪家有买保险网站
  • 最好的网站优化公司高端html5网站建设
  • 南昌网站网站建设网站建设7个主要流程
  • 成都优化网站无锡高端网站建设公司
  • 湖南营销网站建设联系方式wordpress 模板选择器
  • 判断网站模板版本南充建网站的资料
  • 宁波搭建网站帝国cms网站建设
  • 网站建设技术难题wordpress自豪的
  • 北京住房和城乡建设局门户网站excel表格做网站
  • 网站详情页用哪个软件做微信注册小程序收费吗
  • 上海建设工程交易中心网站建设网站方案 ppt
  • 长泰建设局网站如何搭建一个自己上传视频的网站
  • 自己怎么做VIP视频解网站互联网招聘网站排名