julia包中不可变名称的含义

use*_*579 2 julia

我刚刚将包RandomMatrices.jl下载到julia,因为我需要计算Tracy-Widom密度.然而,文档并没有帮助我理解它的含义:

immutable TracyWidom <: ContinuousUnivariateDistribution
end
Run Code Online (Sandbox Code Playgroud)

这个TracyWidom名字是什么类型的?我应该提供什么才能使用该功能进行一些测试

pdf(d::TracyWidom, t::Real)
Run Code Online (Sandbox Code Playgroud)

包含在TracyWidom.jl中?

Iai*_*ing 6

包定义了一个TracyWidom没有字段的类型.您可以TracyWidom通过键入来创建该类型的新实例TracyWidom().

要计算TracyWidom分发的PDF ,请使用pdf(TracyWidom(), 0.5).

您可以从pdf类型签名中找出这一点:第一个参数应该是类型的对象,TracyWidom第二个参数应该是类型Real.

Julia有一个丰富的类型系统,但是这里的相关内容如下:abstract无法创建,immutable在创建后无法修改,type这是"正常"类型.

Distributions.jl中,它基于此,为每个分布定义了类型,例如正态分布

immutable Normal <: ContinuousUnivariateDistribution
    ?::Float64
    ?::Float64
    # Some other stuff...
end
Run Code Online (Sandbox Code Playgroud)

这更有意义,因为它由这两个参数定义 - TracyWidom不需要任何参数,但我们仍然遵循相同的风格.这<: ContinuousUnivariateDistribution意味着Normal并且TracyWidom都是ContinuousUnivariateDistributions,这是一种抽象类型.