【发布时间】:2020-02-27 03:58:22
【问题描述】:
我正在尝试在宏内创建一个空元组,但出现错误 - 错误:未定义的宏方法 '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
但它也不起作用。
【问题讨论】:
-
听起来你有点滥用宏,我无法理解这个的合法用例。无论如何,只使用一个常量外部宏域应该可以工作并且可以在宏域中引用。
-
@JonneHaß 我正在做一个大项目,所以我需要在多个地方使用宏来完成任务。你能不能给我一个你在说什么的水晶播放链接?
-
你为什么需要这个?
-
@asterite 我正在尝试创建类的实例并使用 splat 将 args 传递给构造函数。我可以使用条件检查来解决这个问题,但最初我是这样想的。
-
你不能在宏代码之外创建空元组吗?为什么在宏代码中需要它?
标签: tuples crystal-lang