gpt4 book ai didi

types - 在另一个装饰函数 @spec 中指定对 Elixir 函数 @spec 的引用

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

有没有办法在另一个函数规范中引用一个函数的返回类型规范?

defmodule Car do
@spec beep(none()) :: String.t
def beep do
"beep"
end

@spec beep_log(none()) :: String.t
def beep_log do
IO.puts "beep log"
beep
end
end

beep_log 的规范可以这样指定吗:

 @spec beep_log(none()) :: beep()

最佳答案

如果不定义两个函数都会返回的新数据类型,就无法做到这一点。您可以在 docs for the GenServer module 中看到此模式的示例。 ,其中 on_start类型由 start/3start_link/3 定义和共享。

就您而言,类似这样的事情会起作用:

defmodule Car do
@type beep_return() :: String.t

@spec beep(none()) :: beep_return()
def beep do
"beep"
end

@spec beep_log(none()) :: beep_return()
def beep_log do
IO.puts "beep log"
beep
end
end

关于types - 在另一个装饰函数 @spec 中指定对 Elixir 函数 @spec 的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36127928/

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