2016-06-22 5 views
1

私はSwiftで既存の型の機能を拡張しようとしています。私はその型のメソッドを呼び出すためにドット構文を使いたい。インスタンスメソッドを持つクラスを拡張する

existingType.example.someMethod() 
existingType.example.anotherMethod() 

私は現在、それほどのような拡張機能を使用しています::私が言いたい

これを行う

extension ExistingType { 
    func someMethod() { 
    } 
    func anotherMethod() { 
    } 
} 

existingType.someMethod() 
existingType.anotherMethod() 

は、あまりにも多くの機能を公開します。したがって、これらのメソッドをクラスに記述して、クラスのインスタンスを使用するようにExistingTypeを拡張するだけです。私はこれについて正しい道を行くのか分からない。

私は実際に私は次のことを行うと、既存の型を実装した場合:

私はでメソッドを呼び出すために許可
struct ExistingType { 

    var example = Example() 
} 

struct Example { 
    func someMethod() { 
    } 

    func anotherMethod() { 
    } 
} 

:問題は、私は実装していないよです

let existingType = ExistingType() 
existingType.example.someMethod() 

これは既に存在するためです。私はそれを拡張する必要があります。

+0

実際に意味のあるクラスとメソッドを使用して例を挙げることができますか、多分あなたがしようとしているものを拾うことができます。 – pnizzle

答えて

1

あなたは別のプロパティexample既存のクラスExistingTypeを追加し、そのプロパティのメソッドを呼び出すようにしようとしているように見えます。ただし、拡張機能にプロパティを追加することはできません。既存のクラスに別のプロパティを追加する唯一の方法は、それをサブクラス化することです。

0

structを新しく作成することができます。

struct NewType { 
    let existingType: ExistingType 

    func someMethod() { 
    } 

    func anotherMethod() { 
    } 
} 
関連する問題