gpt4 book ai didi

crystal-lang - Crystal 方法返回多个值

转载 作者:行者123 更新时间:2023-12-02 09:22:44 24 4
gpt4 key购买 nike

Crystal-lang 方法可以返回特定类型的多个值吗?

我知道可以这样实现:

def my_method(arg_1 : Int, arg_2 : String) : Tuple
return arg_1, arg_2
end

res_1, res_2 = my_method(1, "1")

但如果我这样做,它也能工作:

result = my_method(1, "1") #=> {1,"2"}

但我可以像在 Go-lang 中那样思考吗

def my_method(arg_1 : Int, arg_2 : String) : Int, String
return arg_1, arg_2
end

???

谢谢!

最佳答案

Crystal 方法只能返回一个值。 “返回多个值”的方法是返回一个元组,然后,如果需要,立即在调用站点将其解包,就像您所做的那样。

如果你想指定返回类型你可以这样做:

def my_method(arg_1 : Int, arg_2 : String) : {Int32, String}
return arg_1, arg_2
end

或者(相同,只是另一种语法):

def my_method(arg_1 : Int, arg_2 : String) : Tuple(Int32, String)
return arg_1, arg_2
end

您还可以使用更短的语法来返回多个值:

def my_method(arg_1 : Int, arg_2 : String)
{arg_1, arg_2}
end

也就是说,执行 return 1, 2 在内部与返回元组 {1, 2} 相同。

最后,它是如何实现的并不重要,也许在 Go 中函数实际上并不返回两个值而是传递指针或类似的东西,然后在汇编中甚至没有函数,所以如果您可以返回多个东西然后以某种方式一次获取所有东西,那么重要的是什么。

关于crystal-lang - Crystal 方法返回多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40694355/

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