假设我有这个代码
class Duck{
func walk() async {
//do something
print("walk start")
try? await Task.sleep(nanoseconds: UInt64(2e9))
print("walk end")
}
func quack() async {
//do something...
print("quack start")
try? await Task.sleep(nanoseconds: UInt64(2e9))
print("quack end")
}
func fly() async{
//do something
print("fly start")
try? await Task.sleep(nanoseconds: UInt64(2e9))
print("fly end")
}
}
let duck = Duck()
Task{
await duck.walk()
}
Task{
await duck.quack()
}
Task{
await duck.fly()
}
Run Code Online (Sandbox Code Playgroud)
这将打印
walk start
quack start
fly start
walk end
quack end
fly end
Run Code Online (Sandbox Code Playgroud)
这是我理解和期望的。但是如果我希望这 3 个 …
我发现这段代码没有产生错误
protocol Foo{
func foo()
}
let x: Foo? = nil
Run Code Online (Sandbox Code Playgroud)
当下面开始抱怨时Use of protocol 'Foo' as a type must be written 'any Foo'
protocol Foo: ObservableObject{
func foo()
}
let x: Foo? = nil //Use of protocol 'Foo' as a type must be written 'any Foo'
Run Code Online (Sandbox Code Playgroud)
既然ObservableObject继承了AnyObject所以我尝试了
protocol Foo: AnyObject{
func foo()
}
let x: Foo? = nil
Run Code Online (Sandbox Code Playgroud)
这又没有给出任何错误。
any使用协议作为类型时需要写入的具体条件是什么?