2016-06-22 65 views
0
struct Person { 
    var age: Int 
    var name: String 
    var siblings: Int 

    func sameAge(Person: p1, Person: p2) -> Boolean { 
     return (p1.age == p2.age) 
    } 
} 

我如何引用結構,我在上面的例子中定義了自己的定義中,什麼樣的?參考結構 - 斯威夫特

我看到的錯誤是

與前值定義衝突

+0

順便說一句,這個函數應該是一個類函數,或者它應該只有一個參數。 –

+0

@AaronBrager爲什麼呢? – Apollo

+0

因爲它比較了兩個'Person's,但是有三分之一在玩:'self' –

回答

1

參數類型冒號後應該去:

func sameAge(p1: Person, _ p2 : Person) -> Boolean { 
    return (p1.age == p2.age) 
} 
+0

哦對...謝謝。你是否同意這應該是一個類的功能? – Apollo

+0

如果你不使用當前實例的數據,那麼是的,這使得函數靜態是有意義的。或者你可以有func sameAge(與另一個人) - > Boo {return。(age == p2.age) } – Vladimir

0

你應該使用一個靜態函數或只取如提到的評論一樣。

func sameAge(p2: Person) -> Boolean { 
    return (self.age == p2.age) 
} 

static func sameAge(p1: Person, p2: Person) -> Boolean { 
    return (p1.age == p2.age) 
} 
+0

好的謝謝。爲什麼它需要是靜態的? – Apollo

+0

它不需要,但是它的設計不好,因爲你應該調用'Person.sameAge(p1,p2)',但是當p3沒有被使用時你調用'p3.sameAge(p1,p2)'。 – Code