Swift 筛选任何类型的vararg
我有以下类和构造函数:Swift 筛选任何类型的vararg,swift,Swift,我有以下类和构造函数: class List<T> { var value: T var next: List<T>? init(_ items: Any...) { } 类列表{ var值:T 下一步:列表? 初始(uu项:任何…){ } 构造函数可以接受以下内容: let list=list(list(7,2,6,list(3,5,1)) 我在构造函数中的目标是按特定顺序过滤掉数字7,2,6,3,5,1,当然它们可以是字符串,因为它是一个模板
class List<T> {
var value: T
var next: List<T>?
init(_ items: Any...) {
}
类列表{
var值:T
下一步:列表?
初始(uu项:任何…){
}
构造函数可以接受以下内容:
let list=list(list(7,2,6,list(3,5,1))
我在构造函数中的目标是按特定顺序过滤掉数字7,2,6,3,5,1,当然它们可以是字符串,因为它是一个模板
init(_ items: Any...) {
for info in items
{
if let str = info as? T {
if let str2 = info as? List<T> {
}
else
{
print("this is primitive \(info)")
}
}
}
init(u项:任何…){
查看项目中的信息
{
如果让str=info为?T{
如果让str2=信息作为?列表{
}
其他的
{
打印(“这是原语\(信息)”)
}
}
}
然而,我的结果是:
this is primitive 7
this is primitive 2
this is primitive 5
this is primitive 1
this is primitive 3
this is primitive main.List<Swift.Int>
this is primitive main.List<Swift.Int>
this is primitive 6
这是原语7
这是原语2
这是原始5
这是原语1
这是原始3
这是原语main.List
这是原语main.List
这是原始6
因此,我似乎没有过滤掉main.List,也没有按顺序,有什么想法可以实现这一点吗?首先,处理varargs的顺序似乎不是顺序的,而是对
init(u)items:any…
的递归调用,因此我认为您无法获得所需的顺序
关于main.list是来自调用的原语的打印
init(3, List<Int>(5, 1)
下面是我的init测试版本
init(_ items: Any...) {
print(items)
for item in items {
switch item {
case is List<T>:
print("Is list")
case is T:
print("Primitive \(item)")
default:
print("Other stuff")
}
}
}
init(u项:任何…){
打印(项目)
对于项目中的项目{
开关项{
病例列表:
打印(“Is列表”)
案例为T:
打印(“原语\(项目)”)
违约:
打印(“其他内容”)
}
}
}
init(_ items: Any...) {
print(items)
for item in items {
switch item {
case is List<T>:
print("Is list")
case is T:
print("Primitive \(item)")
default:
print("Other stuff")
}
}
}