2016-10-29 8 views
-3
struct Shape{ 
var length: Float = 0 
var width: Float = 0 

struct Rectange { 
    var length = Shape().length 
    var width = Shape().width 

    var area: Float{ 
     get{ 
      return length * width 
     } 
    } 


} 
} 

私は1つの構造体の値を入れ子構造体に割り当てる方法を知っています。私はちょうどこれが実際の生活の中で使用されているか「法的」であるかを見たいと思っています。クラス/構造体の中にクラス/構造体を置くことは、実際には "法的"かUSEDか?

+2

「法的」とはどういう意味ですか?それはおそらく法的ですのでコンパイルします;) –

+0

私は人が実際に実生活でこれをしているのと同じように意味します。プログラマーはこの戦略を使用していますか? @appzYourLife – FusionPointInc

+7

'String.CharacterView'、' Calendar.Identifier'はSwift標準ライブラリの例です。 –

答えて

1

実際には間違いなく使用されています。 Appleはサンプルコードの例でこれを推奨しています。 https://developer.apple.com/library/content/LucidDreams/Introduction/Intro.html

+0

'Shape'型、' Rect'型、 'Circle'型、' Rect'と 'Circle'を' Shape'の下に置くことは意味がありますか? – FusionPointInc

+0

それは、あなたがしようとしていたことに依存します。これらのタイプを入れ子にする利点は、このように物事を推論することが時々容易であることです。そのサンプルコードでは、それらのクラス内で使用されるため、クラス内で定義されている多くの列挙型が表示されます。あなたのケースがそれに合っているかどうかはわかりません。 –

1

はい、このアプローチは実生活で使用されています。

struct Spaceship { 
    enum Speed { 
     case warp, light 
    } 
    let maxSpeed: Speed 
} 

struct Airplane { 
    enum Speed { 
     case subsonic, supersonic 
    } 
    let maxSpeed: Speed 
} 

どちらの構造体は、それらの内部で定義されたSpeedタイプを持っている。この例では

ルックは、(ここで私は列挙型を使用していますが、我々は、構造体やクラスのための同様の例を想像することができます)。 Speed enumはSpaceshipAirplaneという名前空間内に定義されているため、名前の衝突はなく、すべてが明確です。

+0

さて、私はあなたの見出しがどこにあるのか見ています。私の例は、あなたが 'Shape'型を持っていて、' Rectangle'とタイプし、 'Square'と入力したようなものです。これらの2つの型を 'Shape'の中に入れるのも意味がありますか? @appzYourLife – FusionPointInc

+0

@FusionPointInc:答えを更新しました。どうぞご覧ください。 –

+0

ええ、私は理解していますが、その飛行機を宇宙船の下に置いても、それはまだ実践されていますか?あなたが価値を持っているかどうかは関係ありません。 – FusionPointInc

関連する問題