2016-05-24 6 views
3

その後、私は一種の参照によっておよび一般の値であるか知っているが、いくつかのポイントのために、私は詳細参照によって値から値/定数を作成し、それで何が違うのですか?

で非常に混乱を感じるのは、クラスPersonを定義し、それから定数変数を初期化しようと誰かが私に言わせれば:TomTimKimJimの違いは何ですが、私はCコード

class Person{ 
    var ID: Int 
    var name: String 

    init (ID: Int, name: String){ 
     self.ID = ID 
     self.name = name 
    } 
} 

var bornVar = Person(ID: 101, name: "me") // initialize a variable 
let Tom = bornVar // pass the varialbe to a constant 
var Tim = Tom // pass the variable to a variable 


let bornLet = Person(ID: 102, name: "I") // initialize a constant 
let Kim = bornLet // pass the constant to another constant 
var Jim = Kim // pass the constant to a variable 

質問の周りにそれらを渡します明確な答えを出してはいけません。非常に誰かが人

Tomを指しているあなたがここに二つのオブジェクトbornVarとparameterziedのinitとbornLet作成この

答えて

1
var bornVar = Person(ID: 101, name: "me") // initialize a variable 
let Tom = bornVar // assigning the ref of `bornVar` which is having person object reference and you can't assign the any other object to `Tom` 
var Tim = Tom // assigning the reference of person object using `Tom` 


let bornLet = Person(ID: 102, name: "I") // initialize a constant 
let Kim = bornLet // pass the constant to another constant 
var Jim = Kim // pass the constant to a variable 

で私を助けることができるならば、我々は変更することはできません参照するプロパティをされ感謝し、それがあります有する者オブジェクトが

Timを参照されbornVarを指していることはbornVarを指している財産であり、あなたはそれを参照する変更することができ

同じように

Kim我々は変更することはできません参照財産であり、それは

Jim持つ人物オブジェクト参照であるbornLetを指していることはbornLetを指している財産であり、私は薄い。この例で

class MyObject : Equatable { 
let a : Int, b : String 
init(a: Int, b: String) { self.a = a; self.b = b } 
} 
// ... 

let a = MyObject(a: 10, b: "foo") 
let b = a 
let c = MyObject(a: 10, b: "foo") 

a == b // true; 'a' and 'b' are equal in value 
a === b // true; 'a' and 'b' point to the same instance 

a == c // true; 'a' and 'b' are equal in value 
a === c // false; 'a' and 'c' are different instances 
+0

外観を参照し、それを変更することができます私は今、コンセプトをよく知っています。つまり、トム(トム=キム//間違っている)にキムを割り当てることはできませんが、ティムにキムを割り当てることはOKです(ティム=キム//有効) – SLN

+0

はい、あなたは正しいです。 – Sahil

+0

回答ありがとうございましたありがとうございました – SLN

関連する問題