2015-12-12 3 views
-1
class NamedShape { 
    var numberOfSides: Int = 0 
    var name: String 

    init(name: String) { 
     self.name = name 
    } 

    func simpleDescription() -> String { 
     return "A shape with \(numberOfSides) sides." 
    } 
} 

class Square: NamedShape { 
    var sideLength: Double 

    init(sideLength: Double, name: String) { 
     self.sideLength = sideLength 
     super.init(name: name) 
     numberOfSides = 4 
    } 

    func area() -> Double { 
     return sideLength * sideLength 
    } 

    override func simpleDescription() -> String { 
     return "A square with sides of length \(sideLength)." 
    } 
} 


let test = Square(sideLength: 5.2, name: "my test square") 
let a = test.area() 
print(a) //here gives me the error: Expression are not allowed at the top level 
+0

Это действительно отлично работает в консольном приложении. Поэтому я бы предположил, что это проект Cocoa/CocoaTouch? – Sulthan

+0

Какой проект я должен создать для быстрого запуска? – Cristian

+0

Вы спрашиваете неправильно. Какое приложение вы пытаетесь сделать? Приложение iOS? Приложение OS X Window? Консольное приложение? Приложение Apple Watch? – Sulthan

ответ

-1

Эти три строки в конце кода должны быть где-то еще, например метод в классе. Исключением является то, что если вы используете детскую площадку, которую я ожидаю, это то, что вы хотите сделать в этом случае - игровые площадки могут иметь свободный код.

Если вы хотите, чтобы поместить его в классе, использовать что-то вроде этого:

class Testy { 
    func doStuff() { 
     let test = Square(sideLength: 5.2, name: "my test square") 
     let a = test.area() 
     print(a) 
    } 
} 

Если вы хотите, чтобы вызвать его из существующего метода, попробуйте использовать что-то вроде viewDidLoad() в контроллере представления.

+0

Это не печатает мне ничего в консоли, почему? – Cristian

+0

Если вы поместите его внутри класса, вам нужно вызвать класс - создать новый экземпляр, а затем вызвать 'doStuff()' на нем. – TwoStraws

+0

Я создаю его внутри класса Testy, и когда я пытаюсь позвонить, он дает мне ожидаемую ошибку! – Cristian

1

Вы пытаетесь выполнить функцию void на верхнем уровне. print() должен быть вложен внутри класса, структуры и т. Д.

+0

не работает, если он вложен в класс. Если я вложу его в класс, он даст мне следующую ошибку в строке: «let a = test.area()» Экземпляр участника не может использоваться по типу Squere – Cristian

Смежные вопросы