gpt4 book ai didi

Julia:什么是 Julia 中的 Array 中的 undef

转载 作者:行者123 更新时间:2023-12-01 09:12:17 25 4
gpt4 key购买 nike

  • 这是数组的构造函数:
  • Array{T}(undef, dims)
    我是 Julia 的新手,没有很好的编程背景。在这个语法中,为什么 undef用于创建数组?
  • 什么是 Julia 中的构造函数,我们在什么情况下使用构造函数?

  • 如果我们不输入构造函数,Julia 会自动创建一个构造函数。那么,我们为什么要使用构造函数呢?

    最佳答案

    首先,您要了解什么是构造函数:
    为此,我建议您使用 Julia 文档:Constructors in Julia

    现在你有了理论,让我们分解这个表达式:

    a = Array{Int}(undef, (2, 2)) 

    这个表达式的意思是“我希望 a 是维度 (2, 2) 的 Array”。所以 Julia 会要求一些内存空间。当我在 Julia REPL 上写它时:
    julia> a = Array{Int}(undef, (2, 2))
    2×2 Array{Int64,2}:
    0 0
    0 0

    现在 Array{T}(undef, dims)是它的概括。 “构造一个特定类型的数组 T,具有特定的维数 dims

    到目前为止,我没有解释什么是 undef . undefUndefInitializer() 的快捷方式.在这个例子中,我们想要一个未初始化的数组。这是什么意思?为此,您必须了解变量不是在您的终端上创建的。它们在您的计算机内存中占据特定位置。有时,相同的内存空间被另一个变量占用。所以我的新变量可以占用的空间可能不是空的:
    julia> a = Array{Float64}(undef, (2, 2))
    2×2 Array{Float64,2}:
    6.94339e-310 6.94339e-310
    6.94339e-310 0.0

    在这里,我从未要求这些值(value)观存在。我可以删除它以使用干净的变量。但这意味着删除每个单元格的值,并且计算机替换每个值比声明“这是新变量”要昂贵得多。

    所以基本上, undef未初始化的数组用于性能目的。如果你想要一个初始化好的数组,你可以使用 fill .

    关于Julia:什么是 Julia 中的 Array 中的 undef,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58430581/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com