2016-12-12 2 views
0

Создайте класс треугольника со свойствами для хранения длины каждой стороны. Треугольники называются скалярными, когда все три стороны имеют разную длину, равнобедренные, когда две стороны имеют одинаковую длину или равносторонние, когда все три стороны имеют одинаковую длину.Несколько инициализаторов в одном классе (быстро)

Создайте инициализатор для своего класса, который принимает три аргумента и правильно устанавливает свойства класса. Затем создайте второй инициализатор, который будет использоваться, когда ваш треугольник равносторонний. Помните, что все три стороны будут иметь одинаковую длину, поэтому этот метод должен принимать только один аргумент, но должен все же установить все три свойства. Попробуйте сначала записать этот инициализатор в качестве назначенного инициализатора, а затем преобразовать его в инициализатор удобства. Наконец, нам нужен инициализатор для равнобедренных треугольников, который принимает два аргумента. Подумайте о том, как вы должны настроить внешние имена для своих параметров, чтобы выяснить, какое значение будет использовано для двух сторон.

Этот вопрос меня смущает. Мой вопрос: как я должен создатьравнобедренных и масштабируемых в одном классе? Или я должен создать другой класс? Мне нужна помощь. Я новичок в Свифте. Вот что у меня есть до сих пор.

class Triangle { 

    var sideA: Int 
    var sideB: Int 
    var sideC: Int 

    init(sideA: Int, sideB: Int, sideC: Int) { 

     self.sideA = sideA 
     self.sideB = sideB 
     self.sideC = sideC 
    } 

    convenience init(equilateralWithEdge edge:Int) { 
     self.init(sideA: edge, sideB: edge, sideC:edge) 
    } 

} 
+0

Введенный код размещен отлично. Каков ваш реальный вопрос? – rmaddy

+0

ну, я создал init для равностороннего треугольника, я хотел знать, как поставить init для сканера и равнобедренные все в одном классе. – AllocSystems

+0

Вы добавляете другие инициализаторы точно так же, как вы добавили одно для равностороннего треугольника. – rmaddy

ответ

0

Вот как вы можете добавить еще инициализатору к тому же классу, что будет использовать два параметра для создания равнобедренного треугольника:

class Triangle { 

    var sideA: Int 
    var sideB: Int 
    var sideC: Int 

    init(sideA: Int, sideB: Int, sideC: Int) { 

     self.sideA = sideA 
     self.sideB = sideB 
     self.sideC = sideA 
    } 

    init(sideA: Int, sideB: Int) { 

     self.sideA = sideA 
     self.sideB = sideB 
     self.sideC = sideB 
    } 

    convenience init(equilateralWithEdge edge:Int) { 
     self.init(sideA: edge, sideB: edge, sideC:edge) 
    } 

} 
+2

Почему бы не сделать второй 'init'' удобство ', которое вызывает 1-й? – rmaddy

+0

Спасибо за помощь. Пожалуйста, не думайте так. Вопрос заключается в книге под названием «Самс учат вас быстро в течение 24 часов». Это не домашнее задание, я думаю, что буду заниматься программированием на ios, поэтому я хочу расширить свои знания. Я всегда был человеком на C++. – AllocSystems

+0

Хорошо, мое плохое для предположения, я удалю snark из моего ответа. –

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