Crystal lang Crystal方法返回多个值

Crystal lang Crystal方法返回多个值,crystal-lang,Crystal Lang,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"} 但是我能做一些像《围棋》中的思考吗 def my_method(arg_1 :

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"}
但是我能做一些像《围棋》中的思考吗

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)
  {arg_1, arg_2}
end
也就是说,执行
返回1,2
在内部与返回元组
{1,2}
相同

最后,如何实现这一点并不重要,可能在Go中,函数并不真正返回两个值,而是传递指针或类似的东西,然后在汇编中甚至没有函数,所以如果可以返回多个值,然后以某种方式一次获取它们,那么有什么关系呢

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