是否可以以类型安全的方式从元组中删除最后一个元素以实现任意数量?
我想要这样的东西:
[A,B,C] abc = [a,b,c];
[A,B] ab = removeLast(abc);
最佳答案
不,不幸的是这是不可能的,原因是元组类型在类型系统中表示为 Tuple
实例化的链接列表,但类型系统无法表达循环或递归在函数的签名内。 (并且具有循环/递归几乎肯定会使类型系统变得不可判定。)
原则上,我们将来解决这个问题的一种方法是拥有一个内置原语 type function计算元组类型的最后一个元素类型。
“原始”类型函数是指不能用语言本身编写的类型函数,而是由编译器作为内置函数提供。
Ceylon 目前没有任何此类原始类型函数,但还有一些其他类似的问题可以通过这种方式解决。
关于ceylon - 没有最后一个元素且类型正确的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39557442/