私は同じことをやろうとしているループのための2つがあります。プロトコル適合チェックインforループ?
for item in components where item is UpdateableComponent
{
item.update()
}
for item in components
{
if let component = item as? UpdateableComponent
{
component.update()
}
}
components
がComponent
オブジェクトの配列です。 UpdateableComponent
は基本的に一定の間隔で特定のComponent
の更新を行うプロトコルです。 Component
には、Timer、Player、Enemyなどのゲーム関連のクラスなどのサブクラスがあり、一部はUpdateableComponent
プロトコルに準拠しています。
Component
にはメンバー更新がないというエラーが返されますが、それは真ですが、UpdateableComponent
プロトコルでは発生します。 where句が配列をフィルタリングしないのはなぜですか? 2番目のループはコンパイルされますが、それは私に望ましい効果を与えますか?最初のものほどきれいではないし、同じ効果を達成するべきだと思う。
components
アレイをUpdateableComponent
プロトコルに準拠するオブジェクトにフィルタする有効なオプションが最初のループでないのはなぜですか?
最初のループではこれは受け入れられますか? (UpdateableComponentの項目).update(dt) –
はい私はそれを信じています。あなたが最初にフィルタリングしているので明示的なキャストは大丈夫です – Amloelxer