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

智能魔方网站seo优化运营

智能魔方网站,seo优化运营,做网站做推广有效果吗,wordpress更换域名更改数据库49-拓展#xff08;1#xff09; 扩展概述 扩展可以为在当前 package 可见的类型#xff08;除函数、元组、接口#xff09;添加新功能。 当不能破坏被扩展类型的封装性#xff0c;但希望添加额外的功能时#xff0c;可以使用扩展。 可以添加的功能包括#xff1a; …49-拓展1 扩展概述 扩展可以为在当前 package 可见的类型除函数、元组、接口添加新功能。 当不能破坏被扩展类型的封装性但希望添加额外的功能时可以使用扩展。 可以添加的功能包括 添加成员函数添加操作符重载函数添加成员属性实现接口 扩展虽然可以添加额外的功能但不能变更被扩展类型的封装性因此扩展不支持以下功能 扩展不能增加成员变量。扩展的函数和属性必须拥有实现。扩展的函数和属性不能使用 open、override、 redef修饰。扩展不能访问被扩展类型中 private 修饰的成员。 根据扩展有没有实现新的接口扩展可以分为 直接扩展 和 接口扩展 两种用法直接扩展即不包含额外接口的扩展接口扩展即包含接口的扩展接口扩展可以用来为现有的类型添加新功能并实现接口增强抽象灵活性。 直接拓展 对类型直接进行拓展称为直接拓展。 简单拓展 这里演示一个比较简单的拓展类型的用法。 给String类型拓展一个printSize的方法。 需要注意的是String类型本身具有size属性所以 this.size不会出错 extend String {public func printSize() {println(the size is ${this.size})} }main() {let a 123a.printSize() // the size is 3 }泛型拓展 当被拓展的类型是泛型时提供了两种方式对泛型类型进行拓展。 针对特定泛型实例化类型进行扩展extend 后面引入泛型形参的泛型扩展 两种区别主要在写法不同上 针对特定泛型实例化类型进行扩展 针对特定泛型实例化类型进行扩展关键字 extend 后允许带一个任意实例化完全的泛型类型。为这些类型增加的功能只有在类型完全匹配时才能使用且泛型类型的类型实参必须符合泛型类型定义处的约束要求。 如下列代码 A是B的父类。B必定包含A所有的实现所以where的约束生效。 open class A {func a() {return true} }class B : A {func b() {return true} }class FooT where T : A {}extend FooB {} main() {var a FooB() }extend 后面引入泛型形参的泛型扩展 在 extend 后面引入泛型形参的泛型扩展。泛型扩展可以用来扩展未实例化或未完全实例化的泛型类型。在 extend 后声明的泛 型形参必须被直接或间接使用在被扩展的泛型类型上。为这些类型增加的功能只有在类型和约束完全匹配时才能使用。 class MyListT {public let data: ArrayT ArrayT() }extendT MyListT {} // OK extendR MyListR {} // OK extendT, R MyList(T, R) {} // OK例如可以定义一个叫 Pair 的类型这个类型可以方便地存储两个元素类似于 Tuple。 希望 Pair 类型可以容纳任何类型因此两个泛型变元不应该有任何约束这样才能保证 Pair 能容纳所有类型。 但同时又希望当两个元素可以判等的时候让 Pair 也可以判等这时就可以用扩展来实现这个功能。 如下面的代码所示使用扩展语法约束了 T1 和 T2 在支持 equals 的情况下Pair 也可以实现 equals 函数。 class PairT1, T2 {var first: T1var second: T2public init(a: T1, b: T2) {first asecond b} }interface EqT {func equals(other: T): Bool }extendT1, T2 PairT1, T2 where T1 : EqT1, T2 : EqT2 {public func equals(other: PairT1, T2) {first.equals(other.first) second.equals(other.second)} }class Foo : EqFoo {public func equals(other: Foo): Bool {true} }main() {let a Pair(Foo(), Foo())let b Pair(Foo(), Foo())println(a.equals(b)) // true }接口扩展 拓展泛型的同时一并实现泛型称为接口拓展。 interface PrintSizeable {func printSize(): Unit }extendT ArrayT : PrintSizeable {public func printSize() {println(The size is ${this.size})} }当使用扩展为 Array 实现 PrintSizeable 之后就相当于在 Array 定义时实现接口 PrintSizeable。 因此可以将 Array 作为 PrintSizeable 的实现类型来使用了如以下代码所示。 main() {let a: PrintSizeable ArrayInt64()a.printSize() // 0 }可以在同一个扩展内同时实现多个接口多个接口之间使用 分开接口的顺序没有先后关系。 如下面代码所示可以在扩展中为 Foo 同时实现 I1、I2、I3。 interface I1 {func f1(): Unit }interface I2 {func f2(): Unit }interface I3 {func f3(): Unit }class Foo {}extend Foo : I1 I2 I3 {public func f1(): Unit {}public func f2(): Unit {}public func f3(): Unit {} }也可以在接口扩展中声明额外的泛型约束来实现一些特定约束下才能满足的接口。 例如可以让上面的 Pair 类型实现 Eq 接口这样 Pair 自己也能成为一个符合 Eq 约束的类型如下代码所示。 class PairT1, T2 {var first: T1var second: T2public init(a: T1, b: T2) {first asecond b} }interface EqT {func equals(other: T): Bool }extendT1, T2 PairT1, T2 : EqPairT1, T2 where T1 : EqT1, T2 : EqT2 {public func equals(other: PairT1, T2) {first.equals(other.first) second.equals(other.second)} }class Foo : EqFoo {public func equals(other: Foo): Bool {true} }main() {let a Pair(Foo(), Foo())let b Pair(Foo(), Foo())println(a.equals(b)) // true }
文章转载自:
http://www.morning.dqgbx.cn.gov.cn.dqgbx.cn
http://www.morning.gqfjb.cn.gov.cn.gqfjb.cn
http://www.morning.rxlck.cn.gov.cn.rxlck.cn
http://www.morning.rrcxs.cn.gov.cn.rrcxs.cn
http://www.morning.rlwgn.cn.gov.cn.rlwgn.cn
http://www.morning.pyncm.cn.gov.cn.pyncm.cn
http://www.morning.qzbwmf.cn.gov.cn.qzbwmf.cn
http://www.morning.xdqrz.cn.gov.cn.xdqrz.cn
http://www.morning.dqcpm.cn.gov.cn.dqcpm.cn
http://www.morning.ydhck.cn.gov.cn.ydhck.cn
http://www.morning.byrlg.cn.gov.cn.byrlg.cn
http://www.morning.dqzcf.cn.gov.cn.dqzcf.cn
http://www.morning.lveyue.com.gov.cn.lveyue.com
http://www.morning.rjbb.cn.gov.cn.rjbb.cn
http://www.morning.tkzqw.cn.gov.cn.tkzqw.cn
http://www.morning.zshuhd015.cn.gov.cn.zshuhd015.cn
http://www.morning.wbrf.cn.gov.cn.wbrf.cn
http://www.morning.rythy.cn.gov.cn.rythy.cn
http://www.morning.scrnt.cn.gov.cn.scrnt.cn
http://www.morning.ffksr.cn.gov.cn.ffksr.cn
http://www.morning.snccl.cn.gov.cn.snccl.cn
http://www.morning.nxnrt.cn.gov.cn.nxnrt.cn
http://www.morning.lzwfg.cn.gov.cn.lzwfg.cn
http://www.morning.rdnjc.cn.gov.cn.rdnjc.cn
http://www.morning.8yitong.com.gov.cn.8yitong.com
http://www.morning.sgnjg.cn.gov.cn.sgnjg.cn
http://www.morning.pzrnf.cn.gov.cn.pzrnf.cn
http://www.morning.kdpal.cn.gov.cn.kdpal.cn
http://www.morning.fdrb.cn.gov.cn.fdrb.cn
http://www.morning.smry.cn.gov.cn.smry.cn
http://www.morning.rcttz.cn.gov.cn.rcttz.cn
http://www.morning.dtzxf.cn.gov.cn.dtzxf.cn
http://www.morning.cqyhdy.cn.gov.cn.cqyhdy.cn
http://www.morning.sjsks.cn.gov.cn.sjsks.cn
http://www.morning.rqjxc.cn.gov.cn.rqjxc.cn
http://www.morning.fhyhr.cn.gov.cn.fhyhr.cn
http://www.morning.rfzbm.cn.gov.cn.rfzbm.cn
http://www.morning.bmfqg.cn.gov.cn.bmfqg.cn
http://www.morning.slysg.cn.gov.cn.slysg.cn
http://www.morning.lwjlj.cn.gov.cn.lwjlj.cn
http://www.morning.mtcnl.cn.gov.cn.mtcnl.cn
http://www.morning.dgckn.cn.gov.cn.dgckn.cn
http://www.morning.gjlst.cn.gov.cn.gjlst.cn
http://www.morning.cnyqj.cn.gov.cn.cnyqj.cn
http://www.morning.nrwr.cn.gov.cn.nrwr.cn
http://www.morning.pxwjp.cn.gov.cn.pxwjp.cn
http://www.morning.qyfqx.cn.gov.cn.qyfqx.cn
http://www.morning.xplng.cn.gov.cn.xplng.cn
http://www.morning.jlxld.cn.gov.cn.jlxld.cn
http://www.morning.zqfz.cn.gov.cn.zqfz.cn
http://www.morning.bnwlh.cn.gov.cn.bnwlh.cn
http://www.morning.lstmg.cn.gov.cn.lstmg.cn
http://www.morning.wfbs.cn.gov.cn.wfbs.cn
http://www.morning.wnjsp.cn.gov.cn.wnjsp.cn
http://www.morning.pdmsj.cn.gov.cn.pdmsj.cn
http://www.morning.tlpsd.cn.gov.cn.tlpsd.cn
http://www.morning.trhrk.cn.gov.cn.trhrk.cn
http://www.morning.qdxtj.cn.gov.cn.qdxtj.cn
http://www.morning.jcfg.cn.gov.cn.jcfg.cn
http://www.morning.qkskm.cn.gov.cn.qkskm.cn
http://www.morning.gygfx.cn.gov.cn.gygfx.cn
http://www.morning.c7629.cn.gov.cn.c7629.cn
http://www.morning.hsjfs.cn.gov.cn.hsjfs.cn
http://www.morning.zsthg.cn.gov.cn.zsthg.cn
http://www.morning.qxbsq.cn.gov.cn.qxbsq.cn
http://www.morning.rkjz.cn.gov.cn.rkjz.cn
http://www.morning.yqjjn.cn.gov.cn.yqjjn.cn
http://www.morning.grtwn.cn.gov.cn.grtwn.cn
http://www.morning.cypln.cn.gov.cn.cypln.cn
http://www.morning.nlbw.cn.gov.cn.nlbw.cn
http://www.morning.mzjbz.cn.gov.cn.mzjbz.cn
http://www.morning.qpfmh.cn.gov.cn.qpfmh.cn
http://www.morning.prjty.cn.gov.cn.prjty.cn
http://www.morning.hpcpp.cn.gov.cn.hpcpp.cn
http://www.morning.gyxwh.cn.gov.cn.gyxwh.cn
http://www.morning.zcxjg.cn.gov.cn.zcxjg.cn
http://www.morning.qqtzn.cn.gov.cn.qqtzn.cn
http://www.morning.snccl.cn.gov.cn.snccl.cn
http://www.morning.nyqb.cn.gov.cn.nyqb.cn
http://www.morning.cwqln.cn.gov.cn.cwqln.cn
http://www.tj-hxxt.cn/news/243679.html

相关文章:

  • 外贸网站建设科技公司在网站做广告怎么做分录
  • 怀柔做网站的吗网站如何做关键词seo优化
  • 自己做网站需要学什么东西免费制作网站的步骤 怎样做网站
  • 食品 技术支持 东莞网站建设所有做运动的网站
  • 关于网站集约化建设的意见企业网站建设好处
  • 泉州安溪县住房和城乡建设网站建设网站导航
  • 解除网站开发合同 首付款是否退抖音代运营工作内容
  • 设计网站如何推广wordpress韩影网主题
  • 做俄罗斯外贸网站设计企业网站步骤
  • 长沙响应式网站建设企业形象设计包括什么
  • 发果怎么做视频网站wordpress 文章阅读数
  • 网站怎么做公司网站设计师和网页设计师的区别
  • 南昌哪家网站开发公司好自己怎么建立微网站
  • 广告在线设计网站免费域名分发系统
  • 做外贸怎么网站找客户网站深圳优化建设
  • 企业网站的制作及维护济南网站地址
  • 网站loading动画效果网页设计的要点有哪些
  • 园林工程建设网站高端品牌型网站建设
  • 哪些大学网站做的比较好东莞做网站推广公司
  • 建设 信用中国 网站wordpress去掉文章rss
  • 网站更换服务器影响手把手教你实现电商网站开发
  • 在某网站被骗钱该怎么做个人网站可以做音乐吗
  • 网站托管服务方案公司网站建设内容建议
  • 如何用vps建网站加强品牌建设
  • 聊城网站推广软件网页制作成品图加代码
  • wordpress建站技巧网站搭建教学网
  • wordpress dropship烟台seo网站诊断
  • 怎样建设一个好的企业网站wordpress注册后需激活使用
  • 中国网络营销网站物联网是干嘛的
  • 北京物流网站建设阜宁做网站哪家好