如何在Crystal lang宏内部使用构造函数创建元组

问题描述 投票:-1回答:1

我正在尝试在宏内部创建一个空的元组,但出现错误-错误:未定义的宏方法'TypeNode#new'


{% empty_tuple = Tuple.new %}

这里是水晶游戏的链接-https://play.crystal-lang.org/#/r/8mxf

如果无法这样做,请告诉我是否有其他选择

更新1

我正在尝试初始化一个类-情况是有些类构造函数有参数而有些没有参数

因此,我想到了将带有splat的元组用于参数传递。

这里是我想要做的水晶游戏链接-https://play.crystal-lang.org/#/r/8n4g

更新2

您可以使用直接语法创建元组

args = {1}

但是如果您想创建一个空的元组,这是行不通的,因为哈希语法很相似,并且编译器在为哈希声明提供类型时抛出错误。

所以我考虑使用构造函数语法-Tuple.new

但是它也不起作用。

tuples crystal-lang
1个回答
-1
投票

我试图使用宏创建许多类的实例,这就是为什么我选择这种方法。

由于我无法在宏中创建空元组。我想出了一个办法-如果我得到某种没有任何参数的方法的参数,这意味着它将是空元组怎么办?

但不是,这是一个空数组

再次我被困住了。所以我用

如果还有

解决此问题。基本上检查是否需要使用args初始化类,然后创建一个类并在构造函数中传递参数,否则将初始化没有任何args的类。

希望这对某人有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.