Crystal 方法 return 多个值
Crystal method return multiple values
Crystal-lang 方法可以 return 具有特定类型的多个值吗?
我知道可以这样实现:
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 方法只能 return 一个值。 "return multiple values" 的方法是 return 创建一个元组,然后,如果需要,立即在调用站点解压它,就像您所做的那样。
如果您想指定 return 类型,您可以这样做:
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
您还可以使用更短的语法来 return 多个值:
def my_method(arg_1 : Int, arg_2 : String)
{arg_1, arg_2}
end
也就是说,return 1, 2
在内部与 return 元组 {1, 2}
相同。
最后,它是如何实现的并不重要,也许在 Go 中该函数实际上并不是 return 两个值而是传递指针或类似的东西,然后在汇编中有' 甚至功能,所以如果您可以 return 多个东西然后以某种方式一次获得它们,那么重要的是什么。
Crystal-lang 方法可以 return 具有特定类型的多个值吗?
我知道可以这样实现:
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 方法只能 return 一个值。 "return multiple values" 的方法是 return 创建一个元组,然后,如果需要,立即在调用站点解压它,就像您所做的那样。
如果您想指定 return 类型,您可以这样做:
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
您还可以使用更短的语法来 return 多个值:
def my_method(arg_1 : Int, arg_2 : String)
{arg_1, arg_2}
end
也就是说,return 1, 2
在内部与 return 元组 {1, 2}
相同。
最后,它是如何实现的并不重要,也许在 Go 中该函数实际上并不是 return 两个值而是传递指针或类似的东西,然后在汇编中有' 甚至功能,所以如果您可以 return 多个东西然后以某种方式一次获得它们,那么重要的是什么。