2016-06-22 47 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