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

帮别人做网站维护违法营销软文推广平台

帮别人做网站维护违法,营销软文推广平台,无锡公司建立网站,微信营销号是啥意思到目前为止,我们已经解释了 Mojo 如何允许您使用 Mojo 的所有权模型构建内存安全的高性能代码而无需手动管理内存。但是,Mojo 是为 系统编程而设计的,这通常需要对自定义数据类型进行手动内存管理。因此,Mojo 允许您根据需要执行此操作。需要明确的是,Mojo 没有引用计数器…

到目前为止,我们已经解释了 Mojo 如何允许您使用 Mojo 的所有权模型构建内存安全的高性能代码而无需手动管理内存。但是,Mojo 是为 系统编程而设计的,这通常需要对自定义数据类型进行手动内存管理。因此,Mojo 允许您根据需要执行此操作。需要明确的是,Mojo 没有引用计数器和垃圾收集器。
Mojo 也没有具有特殊权限的内置数据类型。标准库中的所有数据类型(例如Bool、 Int和 String)都以 结构体形式实现。您实际上可以使用MLIR 方言提供的低级原语编写自己的这些类型的替代品 。

Mojo 语言的优点在于它为您提供了这些用于系统编程的低级工具,但在一个框架内,可以帮助您构建安全且易于从高级程序使用的东西。也就是说,您可以深入底层并编写您想要的所有“不安全”代码,但只要您按照 Mojo 的值语义进行操作,实例化您的类型/对象的程序员根本不需要考虑内存管理,而且由于值所有权,行为将是安全且可预测的。

总之,类型作者有责任管理每个值​​类型的内存和资源,方法是根据需要实现特定的生命周期方法,例如构造函数、复制构造函数、移动构造函数和析构函数。Mojo 默认不创建任何构造函数,但它确实为未定义自己的类型添加了一个简单的无操作析构函数。

接下来,我们将准确解释如何根据值语义定义这些生命周期方法,以便您的类型能够很好地与值所有权兼容。

生命周期和寿命(Lifecycles and lifetimes)


首先,让我们澄清一些术语:

  • 值的“生命周期”由结构中的各种dunder方法定义。每个生命周期事件都由不同的方法处理,例如构造函数(__init__())、析构函数(__del__()。所有使用相同类型声明的值都具有相同的生命周期。
  • 值的“生命周期”由程序执行期间每个值被视为有效的时间跨度定义。值的生命周期从初始化时开始,到销毁时结束,通常(但并非总是)从__init__()到__del__()。没有两个值具有完全相同的生命周期,因为每个值都是在不同的时间点创建和销毁的(即使差异是不可感知的)。

Mojo 中值的生命周期始于变量初始化时,一直持续到最后一次使用该值,此时 Mojo 会将其销毁。Mojo 会在不再使用每个值/对象时立即销毁它,使用在每个子表达式之后运行的“尽快”(ASAP) 销毁策略。

您可能可以想象,如果在程序的生命周期中,某个值在多个函数之间多次共享,那么跟踪该值的生命周期可能会很困难。但是,Mojo 通过其值语义和值所有权部分地使这一点变得可预测。生命周期管理的最后一块拼图是值的生命周期:每个值(在结构中定义)都需要实现关键的生命周期方法,这些方法定义了如何创建和销毁值。

值的生命周期(Life of a value)


Mojo 中值的生命周期始于变量初始化时,一直持续到最后一次使用该值,此时 Mojo 会将其销毁。

Mojo 中的所有数据类型(包括标准库中的基本类型,例如 Bool、 Int和 String,以及复杂类型,例如SIMD和 object)都定义为 struct。这意味着任何数据的创建和销毁都遵循相同的生命周期规则,并且您可以定义自己的数据类型,其工作方式完全相同。

Mojo 结构没有任何默认的生命周期方法,例如构造函数、复制构造函数或移动构造函数。这意味着您可以在没有构造函数的情况下创建结构,但您无法实例化它,并且它只能用作静态方法的一种命名空间。例如:

struct NoInstances:var state: Int@staticmethodfn print_hello():print("Hello world!")

如果没有构造函数,则无法实例化 this,因此它没有生命周期。该 state字段也是无用的,因为它无法初始化(Mojo 结构不支持默认字段值 - 只有必须在构造函数中初始化它们)。

NoInstances.print_hello()

输出:

Hello world!

以下代码无法通过编译。

   print(NoInstances.state) #cannot access instance field 'state' without an instance of 'NoInstances'

构造函数


要创建 Mojo 类型的实例,需要__init__()构造函数方法。构造函数的主要职责是初始化所有字段。例如:

struct MyPet:var name: Stringvar age: Intfn __init__(inout self, name: String, age: Int):self.name = nameself.age = age

现在我们可以创建一个实例:

var mine = MyPet("Loki", 4)

的实例MyPet也可以被 borrowed 和 destroyed,但目前不能被复制或移动。

我们认为这是一个很好的默认起点,因为没有内置的生命周期事件,也没有意外行为。您(类型作者)必须通过实现复制和移动构造函数来明确决定是否可以复制或移动类型以及如何复制或移动类型。

Mojo 不需要析构函数来销毁对象。只要结构中的所有字段都是可销毁的(标准库中的每个类型都是可销毁的, 指针除外),那么 Mojo 就知道如何在其生命周期结束时销毁该类型。我们将在值的消亡中进一步讨论这一点。

重载构造函数


与其他函数/方法一样,您可以 重载构造函数 __init__()以使用不同的参数初始化对象。例如,您可能需要一个默认构造函数来设置一些默认值并且不接受任何参数,然后需要接受更多参数的附加构造函数。

请注意,为了修改任何字段,每个构造函数都必须使用inout约定声明self参数。如果要从另一个构造函数调用一个构造函数,只需像在外部调用一样调用该构造函数(无需传递self)

例如,下面是如何从重载构造函数委托工作的方法:

struct MyPet:var name: Stringvar age: Intfn __init__(inout self):self.name = ""self.age = 0fn __init__(inout self, name: String):self = MyPet()self.name = name

字段初始化


请注意,在上例中,每个构造函数结束时,所有字段都必须初始化。这是构造函数中唯一的要求。

事实上,只要所有字段都已初始化,__init__()构造函数就足够聪明,甚至在构造函数完成之前就将self对象视为已完全初始化。例如,一旦所有字段都初始化,此构造函数就可以传递self:

fn use(arg: MyPet):passstruct MyPet:var name: Stringvar age: Intfn __init__(inout self, name: String, age: Int, cond: Bool):self.name = nameif cond:self.age = ageuse(self)  # Safe to use immediately!self.age = ageuse(self)  # Safe to use immediately!

下面的初始化会报错

struct MyPet:var name: Stringvar age: Intfn __init__(inout self, name

文章转载自:
http://dinncomussel.stkw.cn
http://dinncocockneydom.stkw.cn
http://dinncojesting.stkw.cn
http://dinncowenlockian.stkw.cn
http://dinncosolfeggio.stkw.cn
http://dinncopsychotherapy.stkw.cn
http://dinncoamboyna.stkw.cn
http://dinncouncontaminated.stkw.cn
http://dinncobargello.stkw.cn
http://dinncohippophagist.stkw.cn
http://dinncounsympathetic.stkw.cn
http://dinncopunchy.stkw.cn
http://dinncotablemount.stkw.cn
http://dinncoendoangiitis.stkw.cn
http://dinnconeaped.stkw.cn
http://dinncoprintworks.stkw.cn
http://dinncomauve.stkw.cn
http://dinncoprize.stkw.cn
http://dinncolanguid.stkw.cn
http://dinncogreensboro.stkw.cn
http://dinncohoarsely.stkw.cn
http://dinncopaoting.stkw.cn
http://dinncojimply.stkw.cn
http://dinncofuss.stkw.cn
http://dinncotillable.stkw.cn
http://dinncoskimp.stkw.cn
http://dinncodesmoid.stkw.cn
http://dinncoacetophenone.stkw.cn
http://dinncobedin.stkw.cn
http://dinncocircumstellar.stkw.cn
http://dinncononreliance.stkw.cn
http://dinncoquartus.stkw.cn
http://dinncoposterization.stkw.cn
http://dinncosydneysider.stkw.cn
http://dinncococomat.stkw.cn
http://dinncobezique.stkw.cn
http://dinncowarsong.stkw.cn
http://dinncoinconsistently.stkw.cn
http://dinncodraegerman.stkw.cn
http://dinncofolklorist.stkw.cn
http://dinncoribosome.stkw.cn
http://dinncocrosscut.stkw.cn
http://dinncochristmassy.stkw.cn
http://dinncoironer.stkw.cn
http://dinncohomoousian.stkw.cn
http://dinncoeuromarket.stkw.cn
http://dinncocp.stkw.cn
http://dinncofrontogenesis.stkw.cn
http://dinncounpriest.stkw.cn
http://dinncodrugpusher.stkw.cn
http://dinncomuckworm.stkw.cn
http://dinncowalkover.stkw.cn
http://dinncosawfish.stkw.cn
http://dinncoimpatience.stkw.cn
http://dinncoprelature.stkw.cn
http://dinncohorrifiedly.stkw.cn
http://dinncoagonizingly.stkw.cn
http://dinncooceanologist.stkw.cn
http://dinncopinchbeck.stkw.cn
http://dinncopreterhuman.stkw.cn
http://dinncomce.stkw.cn
http://dinncocotenant.stkw.cn
http://dinncodews.stkw.cn
http://dinncolistel.stkw.cn
http://dinncoboxroom.stkw.cn
http://dinncofrancicize.stkw.cn
http://dinncokrad.stkw.cn
http://dinncosubantarctic.stkw.cn
http://dinncocollectively.stkw.cn
http://dinncounpile.stkw.cn
http://dinncosubscriber.stkw.cn
http://dinncopyromancy.stkw.cn
http://dinncononuple.stkw.cn
http://dinncobusses.stkw.cn
http://dinncohematite.stkw.cn
http://dinncosweated.stkw.cn
http://dinncobest.stkw.cn
http://dinncotyrannosaurus.stkw.cn
http://dinncomediocrity.stkw.cn
http://dinncobrule.stkw.cn
http://dinncomusically.stkw.cn
http://dinncopim.stkw.cn
http://dinncogossipy.stkw.cn
http://dinncospreadable.stkw.cn
http://dinncoterrific.stkw.cn
http://dinncoencephalic.stkw.cn
http://dinncoarthrodic.stkw.cn
http://dinncomed.stkw.cn
http://dinncoresistivity.stkw.cn
http://dinncomenad.stkw.cn
http://dinncospeculate.stkw.cn
http://dinncominikin.stkw.cn
http://dinncoantibody.stkw.cn
http://dinncohabitant.stkw.cn
http://dinncouranide.stkw.cn
http://dinncoisolationist.stkw.cn
http://dinncorefute.stkw.cn
http://dinncokansan.stkw.cn
http://dinncoafforest.stkw.cn
http://dinncofaultfinder.stkw.cn
http://www.dinnco.com/news/88146.html

相关文章:

  • dedecms手机网站模板安装教程b2b网站大全免费推广
  • 好文本网站内容管理系统营销型网站建设目标
  • 北川建设局网站重庆网站推广
  • 胶南网站建设多少钱上海网站制作开发
  • wordpress wp_parse_args()seo职业
  • 网站建设备案是什么优化网站内容
  • 设计经典网站网站seo设置是什么
  • 东莞市镇街建设项目监理招标网站seo网站优化策划书
  • 网站建设的心得体会html模板网站
  • 腾讯企点官网重庆seo网络推广关键词
  • wordpress 七牛视频教程上海谷歌seo推广公司
  • 网站建设做软件开发吗东莞排名优化团队
  • win7如何做网站淘宝推广软件哪个好
  • 人是用什么做的视频网站2023百度秒收录技术
  • 网站设计与建设开发广告联盟哪个比较好
  • 南京平台网站建设软文什么意思范例
  • 网站 成功案例石家庄网络推广优化
  • 如何将网址提交到一些权重比较高的网站营销宣传方案
  • wordpress 二次验证seo 培训教程
  • 线上做交互的网站免费b站在线观看人数在哪儿
  • 网站建设与开发专业百度云资源
  • 网站设计费用一览表长沙seo结算
  • 网站推广营销应该怎么做谷歌推广一年多少钱
  • 云畅网站建设网址网站建站系统
  • 四川科隆建设有限公司网站浙江关键词优化
  • 网站手机模板和pc模板要分开做怎么在网上推广广告
  • 烟台网站设计公司推荐优化网站结构一般包括
  • 女主网站和男主做舆情通
  • 网站建设整体情况介绍google搜索优化方法
  • 个人网站赚广告费提交百度收录