gpt4 book ai didi

types - 传递 Fantom 类型文字

转载 作者:行者123 更新时间:2023-12-01 13:42:56 27 4
gpt4 key购买 nike

我正在尝试将 Fantom 中的对象动态转换为运行时选择的所需类型。

Type type := Int#
Obj n := 1 as Obj
echo((n as type).toStr)

这是一个简化的例子。我想将该类型传递给一个类并在运行时对其进行初始化。

最佳答案

一个简单的答案是只使用 dynamic invoke ,即使用 -> 而不是 .。如果你知道方法存在,那么你甚至不需要知道类型:

n := (Obj) 1
echo( n->toStr() )

但更一般地说,您不能像您建议的那样动态转换。因为如果你在编译时不知道什么是 type,那么编译器怎么知道!?

通常 n 会实现在父父类(super class)型上定义的方法,然后您可以将 n 转换为该父类(super class)型并正常调用该方法:

myObj := ...
n := (Supertype) myObj
n.myMethod()

但是如果没有共同的父类型,那么动态调用 是可行的方法。

...或者使用反射!在 Fantom 中轻而易举:

n := (Obj) 1
method := n.typeof.method("toStr")
echo( method.callOn(n, null) )

关于types - 传递 Fantom 类型文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38388585/

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