2017-05-13 5 views
0

I 3静的VARS含有構造体(someUrl)を有する:クラス内の変数を初期化しようとする際にlet定数として扱われる静的なvar?

class Url { 
    var someUrlConstructor: someUrl 

    init(keywords: String, someUrlEnd: String, someUrlStart: String) { 
     self.someUrlConstructor = someUrl(someUrlStart = someUrlStart, keywords = keywords, someUrlEnd = someUrlEnd) 
    } 

} 

:タイプsomeUrlの変数と

struct someUrl { 
    static var keywords = String() 
    static var someUrlStart = String() 
    static var someUrlEnd = String() 
} 

及びクラス(URL)をXcodeは、someUrlStartがlet定数であることを示すエラーを投げています。

は、値に割り当てることができません:「someUrlStartは、」一定の

「を聞かせて」これは私がこれまでの私のコードを持っているALLです、そして静的varが扱われるなぜ私は得ることはありません定数として。これはイニシャライザ固有のものですか?

答えて

5

ここではコンパイラを混乱させています。あなたは、静的なそれらを維持したい場合は代わり

struct someUrl { 
    var keywords = String() 
    var someUrlStart = String() 
    var someUrlEnd = String() 
} 

class Url { 
    var someUrlConstructor: someUrl 

    init(keywords: String, someUrlEnd: String, someUrlStart: String) { 
     self.someUrlConstructor = someUrl(keywords: keywords, someUrlStart: someUrlStart, someUrlEnd: someUrlEnd) 
    } 
} 

:まず、あなたの構文を使用して、パラメータを渡す方法の面で間違っている、それはあなたがstaticを削除し、パラメータの順序を変更する必要があり、:代わりの=する必要があります完全なパラメータを削除し、今、彼らは静的変数ではなくメンバー/インスタンス変数であるため、コンパイラは(あなたが=を書いてやって実際にあったものを基本的にか)あなたがやっていたと思った何を

struct someUrl { 
    static var keywords = String() 
    static var someUrlStart = String() 
    static var someUrlEnd = String() 
} 

class Url { 
    var someUrlConstructor: someUrl 

    init(keywords: String, someUrlEnd: String, someUrlStart: String) { 
     self.someUrlConstructor = someUrl() 
    } 
} 

を変更しようとしていました210(と他の2つ)は、実際には定数である初期化パラメータとして与えられました。


は別に間違った構文から私はちょうど struct someUrl、デフォルトの初期化子を取り、そこから行く、 staticまたは class Urlのための使用が表示されません。一般的な注意:大文字の構造体の最初の文字: SomeUrlをください。

+0

感謝をずっと。私はエラーのために私がしたようにパラメータを注文しました。最初のパラメータにエラーがスローされるか、someUrlStartに固有のものかどうかを確認したいと考えました。また、私は静的なバースとしてそれらを保持しようとしていました。パラメータを削除するように私に思い出させてくれてありがとう – froggomad

1

staticの変数は、インスタンスではなくstructに属します。したがって、ドット表記法を使用して、インスタンスを介してそれらに到達することはできません。

わからないあなたがしたいが、これは技術的に働くだろうか:

struct SomeUrl { 
    static var keywords = String() 
    static var someUrlStart = String() 
    static var someUrlEnd = String() 
} 

class Url { 
    let someUrlConstructor = SomeUrl() 

    init(keywords: String, someUrlEnd: String, someUrlStart: String) { 
     SomeUrl.keywords = keywords 
     SomeUrl.someUrlStart = someUrlStart 
     SomeUrl.someUrlEnd = someUrlEnd 
    } 
} 
関連する問題