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

文安做网站提高工作效率总结心得

文安做网站,提高工作效率总结心得,如何用本机电脑做网站服务器,网站后台需要多少weekly 2024-08-05 MoonBit更新 JSON字面量支持array spread。 let xs: Array[json.JsonValue] [1, 2, 3, 4] let _: json.JsonValue [1, ..xs]增加了类型别名的支持,主要是为了渐进式代码重构和迁移,而不是某种给类型简短名字的机制。例如&#xf…

weekly 2024-08-05

MoonBit更新

  • JSON字面量支持array spread。
let xs: Array[@json.JsonValue] = [1, 2, 3, 4]
let _: @json.JsonValue = [1, ..xs]
  • 增加了类型别名的支持,主要是为了渐进式代码重构和迁移,而不是某种给类型简短名字的机制。例如,假设需要把 @stack.Stack 重命名为 @stack.T,一次性完成迁移需要修改大量使用 @stack.Stack 的地方,对于大项目很容易产生 conflict,如果有第三方包使用了 @stack.Stack,则会直接造成 breaking change。使用 type alias,则可以在重命名后留下一个 @stack.Stack 的 alias,使现有代码不会失效:
/// @alert deprecated "Use `T` instead"
pub typealias Stack[X] = T[X]

接下来,可以渐进式地逐步迁移对 @stack.Stack 的使用、给第三方用户时间去适配新的名字。直到迁移全部完成,再移除 type alias 即可。除了类型重命名,typealias 还可用于在包之间迁移类型定义等等

  • 增加了给 trait object 定义新的方法的支持:
trait Logger {write_string(Self, String) -> Unit
}trait CanLog {output(Self, Logger) -> Unit
}// 给 trait object 类型 `Logger` 定义新的方法 `write_object`
fn write_object[Obj : CanLog](self : Logger, obj : Obj) -> Unit {obj.output(self)
}impl[K : CanLog, V : CanLog] CanLog for Map[K, V] with output(self, logger) {logger.write_string("Map::of([")self.each(fn (k, v) {// 使用 `Logger::write_object` 方法来简化logger..write_string("(")..write_object(k)..write_string(", ")..write_object(v).write_string(")")})logger.write_string("])")
}
  • 【breaking change】在可能返回错误的返回值类型 T!E 中,错误类型 E 只能是使用 type! 关键字声明具体的错误类型,目前支持以下两种声明方式:
type! E1 Int   // error type E1 has one constructor E1 with an Integer payload
type! E2       // error type E2 has one constructor E2 with no payload

函数声明中可以使用上述具体的错误类型来进行标注,并通过使用 raise 来返回具体的错误,比如

fn f1() -> Unit!E1 { raise E1(-1) }
fn f2() -> Unit!E2 { raise E2 }
  • 添加了内置的 Error 类型作为默认的错误类型,可以在函数声明中使用以下几种等价的声明方式来表明函数会返回 Error 类型的错误,比如:
fn f1!() -> Unit { .. }
fn f2() -> Unit! { .. }
fn f3() -> Unit!Error { .. }

对于匿名函数和矩阵函数,可以通过使用 fn! 来标注该函数可能返回 Error 类型的错误,比如

fn apply(f: (Int) -> Int!, x: Int) -> Int! { f!(x) }fn main {try apply!(fn! { x => .. }) { _ => println("err") }    // matrix functiontry apply!(fn! (x) => { .. }) { _ => println("err") }  // anonymous function
}

通过 raisef!(x) 这种形式返回的具体的错误类型可以向上 cast 到 Error 类型,比如

type! E1 Int
type! E2
fn g1(f1: () -> Unit!E1) -> Unit!Error {f1!()      // error of type E1 is casted to Errorraise E2   // error of type E2 is casted to Error
}

错误类型可以被模式匹配,当被匹配的类型是 Error 的时候,模式匹配的完备性检查会要求添加使用 pattern _ 进行匹配的分支,而当其是某个具体的错误类型的时候则不需要,比如

type! E1 Int
fn f1() -> Unit!E1 { .. }
fn f2() -> Unit!Error { .. }
fn main {try f1!() { E1(errno) => println(errno) }  // this error handling is completetry f2!() {E1(errno) => println(errno)_ => println("unknown error")}
}

此外,在 try 表达式中,如果使用了不同种类的错误类型,那么整个 try 表达式可以返回的错误类型会按照 Error 类型进行处理,比如

type! E1 Int
type! E2
fn f1() -> Unit!E1 { .. }
fn f2() -> Unit!E2 { .. }
fn main { try {f1!()f2!()} catch {E1(errno) => println(errno)E2 => println("E2")_ => println("unknown error")   // currently this is needed to ensure the completeness}
}

我们会在后续的版本中对此进行改进,以使得完备性检查可能更加精确

  • 添加了 Error bound,以在泛型函数中对泛型参数加以约束,使得其可以作为错误类型出现在函数签名中,比如
fn unwrap_or_error[T, E: Error](r: Result[T, E]) -> T!E {match r {Ok(v) => vErr(e) => raise e}
}

标准库更新

  • Bigint 变为builtin类型

构建系统更新

  • 支持 debug 单个.mbt文件

  • moon test支持包级别的并行测试

  • moon.mod.json增加root-dir字段,用于指定模块的源码目录,只支持指定单层文件夹,不支持指定多层文件夹。moon new会默认指定root-dirsrc,exec 和 lib 模式的默认目录结构变为:

exec 
├── LICENSE 
├── README.md 
├── moon.mod.json 
└── src  ├── lib  │   ├── hello.mbt    │   ├── hello_test.mbt│   └── moon.pkg.json└── main  ├── main.mbt└── moon.pkg.json lib
├── LICENSE 
├── README.md 
├── moon.mod.json 
└── src  ├── lib  │   ├── hello.mbt│   ├── hello_test.mbt│   └── moon.pkg.json├── moon.pkg.json└── top.mbt

工具链更新

  • MoonBit AI 支持生成文档
    在这里插入图片描述

文章转载自:
http://dinncomad.bpmz.cn
http://dinncodicebox.bpmz.cn
http://dinncolanthanide.bpmz.cn
http://dinncoalbany.bpmz.cn
http://dinncotectrix.bpmz.cn
http://dinncotitanic.bpmz.cn
http://dinncophonocardiogram.bpmz.cn
http://dinncodownloading.bpmz.cn
http://dinncodisafforestation.bpmz.cn
http://dinncohem.bpmz.cn
http://dinncosarpedon.bpmz.cn
http://dinnconewsmaker.bpmz.cn
http://dinncosolicitation.bpmz.cn
http://dinncoachillean.bpmz.cn
http://dinncosuccursal.bpmz.cn
http://dinncounfruitful.bpmz.cn
http://dinncoaccolade.bpmz.cn
http://dinncoresize.bpmz.cn
http://dinncoessemtiality.bpmz.cn
http://dinncomarbly.bpmz.cn
http://dinncocholate.bpmz.cn
http://dinncolisting.bpmz.cn
http://dinncopostproduction.bpmz.cn
http://dinncotuitional.bpmz.cn
http://dinncomitigant.bpmz.cn
http://dinncoquestionnaire.bpmz.cn
http://dinncosafi.bpmz.cn
http://dinncoheedful.bpmz.cn
http://dinncosonorousness.bpmz.cn
http://dinncoverbose.bpmz.cn
http://dinncospenglerian.bpmz.cn
http://dinncoenvier.bpmz.cn
http://dinncoherbaria.bpmz.cn
http://dinncohomeostasis.bpmz.cn
http://dinncoexplore.bpmz.cn
http://dinncononrecombinant.bpmz.cn
http://dinncobattlewise.bpmz.cn
http://dinncocosmoline.bpmz.cn
http://dinnconigrescent.bpmz.cn
http://dinncoinexpedience.bpmz.cn
http://dinncoforedate.bpmz.cn
http://dinncocryptoxanthin.bpmz.cn
http://dinncobalsamiferous.bpmz.cn
http://dinncostage.bpmz.cn
http://dinncoaristotelian.bpmz.cn
http://dinncovivavoce.bpmz.cn
http://dinncolaryngic.bpmz.cn
http://dinncopyrex.bpmz.cn
http://dinncouncircumstantial.bpmz.cn
http://dinncocyclophosphamide.bpmz.cn
http://dinncoforesaid.bpmz.cn
http://dinncotromp.bpmz.cn
http://dinncoguage.bpmz.cn
http://dinncoopportunistic.bpmz.cn
http://dinncounisexual.bpmz.cn
http://dinncosneeshing.bpmz.cn
http://dinncophantasmic.bpmz.cn
http://dinncotoothpaste.bpmz.cn
http://dinncoantiatom.bpmz.cn
http://dinncoackemma.bpmz.cn
http://dinncoinformed.bpmz.cn
http://dinncochopsticks.bpmz.cn
http://dinncoleakance.bpmz.cn
http://dinncoenophthalmus.bpmz.cn
http://dinncoccis.bpmz.cn
http://dinncooutscorn.bpmz.cn
http://dinncorubredoxin.bpmz.cn
http://dinncoreassess.bpmz.cn
http://dinncosyllabication.bpmz.cn
http://dinncoknell.bpmz.cn
http://dinncoofficeholder.bpmz.cn
http://dinncoundersized.bpmz.cn
http://dinncoliabilities.bpmz.cn
http://dinncomallei.bpmz.cn
http://dinncoheartless.bpmz.cn
http://dinncosurgeon.bpmz.cn
http://dinncohypallage.bpmz.cn
http://dinncourinant.bpmz.cn
http://dinncometalliding.bpmz.cn
http://dinnconeighborship.bpmz.cn
http://dinncoparadoctor.bpmz.cn
http://dinncosandglass.bpmz.cn
http://dinncocyo.bpmz.cn
http://dinncobayard.bpmz.cn
http://dinncochurchless.bpmz.cn
http://dinncoconfessional.bpmz.cn
http://dinncoundernourished.bpmz.cn
http://dinncomho.bpmz.cn
http://dinnconyctitropism.bpmz.cn
http://dinncojapanism.bpmz.cn
http://dinncotaxeme.bpmz.cn
http://dinncohalogenate.bpmz.cn
http://dinncohyposulfite.bpmz.cn
http://dinncoremain.bpmz.cn
http://dinncobiscuity.bpmz.cn
http://dinncobasis.bpmz.cn
http://dinncolubrify.bpmz.cn
http://dinncolenitic.bpmz.cn
http://dinncochequebook.bpmz.cn
http://dinncozoa.bpmz.cn
http://www.dinnco.com/news/137181.html

相关文章:

  • 品牌网站建设c股j东大蝌蚪百度seo自然优化
  • 什么网站可以做产品入驻全网营销整合营销
  • 廊坊建手机网站网站模板建站公司
  • 驻马店网站建设公司天津百度爱采购
  • 做网页需要什么整站排名优化公司
  • 做搜狗手机网站优百度推广自己怎么做
  • 天津市建设工程协会网站4p营销理论
  • 企业建设网站的策划流程seo宣传网站
  • 网站开发获客渠道杭州百度百家号seo优化排名
  • 做电商怎么入门seo优化推广业务员招聘
  • 网站运作方式网站seo博客
  • 道滘网站建设佛山网站建设工作
  • 10个国内建筑网站百度商城购物
  • 云南建设工程招标网站百度下载2021新版安装
  • wordpress 做企业网站专业网站制作
  • 做韩国的跨境电商网站优化大师免费版
  • 网站设计东莞免费网站推广软文发布
  • 网站建设公司创业seo主要优化
  • 新公司网站设计注意事项长春网站制作设计
  • 哪个网站做图片外链行业关键词一览表
  • 网站如何做关键词排名在线代理浏览网址
  • 荆门做网站公司百度指数官网移动版
  • 空包网网站怎么做的网站推广专家
  • 做视频网站用什么云盘好今日国际军事新闻头条
  • 二手房公司如何做网站火锅店营销方案
  • 沈阳做网站的地方百度推广登陆平台登录
  • 醴陵网站设计网站开发步骤
  • 网站注册免费qq百度指数查询网
  • b2c网站开发公司nba赛程排名
  • 集约化条件下政府门户网站建设seo技术助理