【问题标题】:What does `new(...)` do in Julia?`new(...)` 在 Julia 中有什么作用?
【发布时间】:2016-05-23 01:05:19
【问题描述】:

new() 在 Julia 中的作用是什么?这个问题是否足够具体?

我正在查看模块Mocha,其中new(...) 的使用非常普遍,但我没有看到new() 的任何定义,只是使用它,我也没有在Julia 文档中找到对它的引用.

我认为它可能会在 Mocha 正在使用的模块中定义,但后来我想我可以从 REPL 中使用 Mocha.new 了解 new() ,但这又是 ERROR: UndefVarError: new not defined .

对于我的一生,我无法弄清楚new(...) 在做什么。如果这听起来不像 Julia 的共同点,我能做些什么来尝试追踪它的定义位置?

【问题讨论】:

  • new() 用于定义inner constructor method。可能还有其他我不知道的用途,因此为什么这是评论而不是答案。
  • 我很确定没有其他用途,它真的是一个关键字,而不是一个函数,只允许在一个类型/不可变的内部。
  • 我认为 Julia 目前的文档非常糟糕。我在文档中找不到明确解释 new() 的地方。有人说我可以看看源代码看看是怎么回事。我不同意。
  • 我发现文档最大的问题不是没有文档记录,而是当前使用的文档系统(搜索几乎不起作用!),最好只使用谷歌文档。

标签: julia


【解决方案1】:

来自http://docs.julialang.org/en/release-0.4/manual/constructors/

内部构造方法

虽然外部构造方法成功 解决提供额外便利方法的问题 构造对象,它们无法解决其他两个用例 本章介绍中提到:强制不变量, 并允许构建自引用对象。对于这些 问题,需要内部构造方法。内部构造函数 方法很像一个外部构造方法,有两点不同:

  1. 它是在类型声明的块内声明的,而不是 像普通方法一样在它之外。
  2. 它可以访问名为 new 的特殊本地存在函数,该函数创建块类型的对象。

【讨论】:

    猜你喜欢
    • 2013-04-02
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    • 2018-01-07
    • 1970-01-01
    • 1970-01-01
    • 2010-09-18
    • 2019-11-12
    相关资源
    最近更新 更多