2017-02-01 20 views
-6
class ClassA { 

} 

class ClassB { 

    func ClassA() -> Bool { 
     return true 
    } 

    var test = ClassA() 
} 

私はにClassAからオブジェクトを作成する必要があるような状況を想定。しかし、現在のクラスでは、同じクラス名を持つメソッドがあります。これはClassAです。スウィフトクラス名&メソッド名と同じ問題

したがって、classB内のclassAからインスタンスを作成するにはどうすればよいですか?現在私はクラスBに入っています。ここでは、変数testはデフォルトでクラス名ではなく関数名を使用します。

+0

、あなたのコードの形式を確認して本当に台無しにし、質問はあまり明確に書かれていません。正直なところ、メソッド 'func ClassA() - > Bool'の名前を別のものに変更することをお勧めします。私の意見では、そのような名前のものはすべて非常に混乱する可能性があります。 – Dan

+6

規則を守り、 'ClassA'の代わりに関数' classA'の名前をつけてください。とにかくそのような関数を呼び出すことはできないので、あなたのコードは有効ではありません。 – Paulw11

+0

ClassAとfunc ClassA showの名前は同じです。それが私の質問です。同じ名前の2人がどのように区別できるのでしょうか? –

答えて

0

"self"キーワードを使用してメソッドを呼び出すことができます(もちろん、別の関数からClassA関数を呼び出すこともできます)。 ClassB内でClassAインスタンスを作成することはできません。現行の規則内でリファクタリング関数名を試してください。回避策としてThedoreの答えを使用してください。

あなたがクラスを変更することはできません、あなたは構造体に ClassAクラスを埋め込むなど classBでそれを呼び出すことができると仮定すると、
class ClassA { 

} 

class ClassB { 

    func ClassA() -> Bool { 
     return true 
    } 

    func something() -> Bool { 
     let a = self.ClassA() 
     return a 

    } 

} 

var b = ClassB() 
var c = b.ClassA() 
var d = b.something() 
+1

"クラスB内のクラスAからインスタンスを作成するにはどうすればよいですか?"あなたは質問に正しく反応していません。 –

+1

あなたは正しいです@テドラーチュール – ANS

+0

回答ありがとう、@ANS。 –

0

StructName.ClassA()

struct Namespace { 
    class ClassA { } 
} 

class ClassB { 

    func ClassA() -> Bool { 
     return true 
    } 

    var test = Namespace.ClassA() 
} 
+0

@ Teodor Ciuraruの両方に感謝します –

+0

@SameeraChandimal問題が解決したら正解を選択することを検討してください。 –

関連する問題