Swiftで汎用クラス定数をどのように定義しますか?あなたはこのようにそれらを定義することができる "ノーマル" クラスの場合すばやくジェネリッククラスの静的定数を定義する方法は?
問題
:
class C {
static let k = 1
}
let a = C.k // 1
をしかし、あなたはジェネリッククラスで同じことを行う場合:
class C<T> {
static let k = 1
}
あなたはコンパイル時に次のエラーが発生します。
ジェネリックタイプではまだサポートされていない静的ストアドプロパティ
これを解決するにはどうすればよいですか?
今
私の現在のソリューションは、私はこれを解決するためにstruct
を使用しています:
struct CConstant {
static let K = 1
}
これは、一般的なクラスのスコープで定義されたが、それは私のために動作していません。 もっと良い解決策はありますか?
-
PS:これは
ありがとうございます。あなたの提案は私の現在の解決策と同じ方向にあるようです。私は、コンテキストに応じてアクセサーを指定するだけです。 静的ストアドプロパティがジェネリック型でまだサポートされていない理由を正確に知っていますか? – ghashi
型パラメータを指定しないでジェネリック型を使用することはできないので、まだサポートされていないと思います。静的なプロパティにアクセスしたいだけなら、 'SomeClass。someConstant'は醜いものに見えます。型パラメータを指定せずに動作させるには、コンパイラでこれを実装する必要があります。これはSwiftチームの最優先課題ではないと思います。 –
mixel