【发布时间】:2018-08-16 04:21:15
【问题描述】:
是否有一些函数或语法结构可以使下一个示例工作?
使用Array 参数调用Hash#values_at 函数:
h = {"a" => 1, "b" => 2, "c" => 3}
ary = ["a", "b"]
h.values_at(*ary) # Error: argument to splat must be a tuple, not Array(String)
传递Hash 来初始化类或结构:
struct Point
def initialize(@x : Int32, @y : Int32)
end
end
h = {"x" => 1, "y" => 2}
Point.new(**h) # Error: argument to double splat must be a named tuple, not Hash(String, Int32)
【问题讨论】:
-
我相信简短的回答是否定的。但我发现,根据您要完成的工作,您可以通过其他方式从 Crystal 获得您想要的。你能给你的问题提供更广泛的背景吗?你为什么要尝试做这些事情?
-
1 在处理数据集(如在 R 或 Numpy 中)时,使用 Array 索引数组可能非常方便。 2 不想重复初始化哈希(通过键入所有键调用初始化)。
标签: crystal-lang splat