gpt4 book ai didi

autocomplete - 当用作多种类型的静态扩展时限制宏函数的自动完成

转载 作者:行者123 更新时间:2023-12-02 01:08:43 24 4
gpt4 key购买 nike

当使用静态宏函数时,打算用作静态扩展,我如何限制将在自动完成列表中获取此函数的变量类型?警告:我知道我可以使用 ExprOf<T>但是如果expr,我需要它用于多种类型以检查我的宏内部与特定的摘要相统一。

最佳答案

除了利用类型系统自行执行统一之外,如果可能的话,您还可以使用专门用于此“过滤”的临时抽象。

// exclusively for static extension x autocomplete
private abstract PseudoType(Dynamic)
from ActualType1
from ActualType2
from ActualType3 {}

[...]

public static macro function myMacro(value:ExprOf<PseudoType>}
{
// ExprOf doesn't do anything other than help with autocomplete
// do actual unification here
// return the appropriate result
}

[编辑] 这是一个例子(live on Try Haxe/alt.):

宏.hx:

import haxe.macro.Expr;

private abstract PseudoType(Dynamic)
from String
from Int
from { val:Float } {}

class Macro {
public static macro function magic(value:ExprOf<PseudoType>)
{
return macro Std.string($value);
}
}

测试.hx:

using Macro;

class Test {
static function main()
{
trace("Haxe is great!".magic());
trace(42.magic());
trace({ val : 3.14 }.magic());
}
}

关于autocomplete - 当用作多种类型的静态扩展时限制宏函数的自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46268785/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com