【问题标题】:Julia: Why does this function return a value?Julia:为什么这个函数会返回一个值?
【发布时间】:2020-02-25 06:28:37
【问题描述】:

Julia 新手,浏览手册并在方法下找到此示例:

julia> mytypeof(x::T) where {T} = T
mytypeof (generic function with 1 method)

当您使用 x 的值调用此方法时,它会返回类型:

julia> mytypeof(1)
Int64

julia> mytypeof(1.0)
Float64

我的问题是:为什么这会返回一个值?换句话说,隐含的返回值在哪里?

【问题讨论】:

  • = T。如果是= 1,该函数将返回 1。

标签: julia


【解决方案1】:

你应该阅读

mytypeof(x::T) where {T} = T

作为

(mytypeof(x::T) where {T}) = T

也就是说,= T 不是where 子句的一部分;它是函数的 RHS。

【讨论】:

  • 有道理,我误读了语法,并假设= Twhere 的一部分。
  • 是的,这可能是 Julia 语法中我最不喜欢的部分。我认为,如果您省略 {T} 中的大括号,这尤其成问题。请注意,如果= Twhere 子句的一部分,则根本不会有任何函数定义。
【解决方案2】:

在 Julia 中,默认情况下会自动返回函数体的最后一个值。

在您的情况下,函数体只是T。因此,T 被返回。 (想想它实际上是return T。)

如果您不想退货,可以return nothing

【讨论】:

    猜你喜欢
    • 2017-02-11
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多