gpt4 book ai didi

ceylon - 如何将 Ceylon Sequential 或数组转换为具有适当类型的通用元组?

转载 作者:行者123 更新时间:2023-12-04 21:11:09 27 4
gpt4 key购买 nike

我有一个通用函数,它需要创建一个元组来调用一个我不知道其参数类型的函数。

像这样(除了这个例子中的 array 是由一些外部代码创建的,所以我不能直接应用该函数):

Result apply<Result, Where>(
Anything[] array,
Callable<Result, Where> fun)
given Where satisfies Anything[] => nothing;

是否有一种类型安全的方法来实现此方法并使用给定的参数获取要调用的函数?

最佳答案

这不能完全类型安全地完成......但假设数组确实包含正确类型的元素,因为它们应该出现在类型为 Where 的元组中。 ,以下函数可以解决问题:

Tuple<Anything, Anything, Anything> typedTuple({Anything+} array) {
if (exists second = array.rest.first) {
return Tuple(array.first, typedTuple({ second }.chain(array.rest.rest)));
}
else {
return Tuple(array.first, []);
}
}

并且 apply 被实现为:
Result apply<Result, Where>(
[Anything+] array,
Callable<Result, Where> fun)
given Where satisfies Anything[] {
value tuple = typedTuple(array);
assert(is Where tuple);
return fun(*tuple);
}

关于ceylon - 如何将 Ceylon Sequential 或数组转换为具有适当类型的通用元组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34122936/

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