2016-10-08 2 views
0

Я делаю это для класса, поэтому я не ищу, чтобы кто-то закодировал это для меня, просто для небольшого руководства. Использование Swift3 в Xcode 8. Я установил предыдущие ошибки, и я думаю, что я достигла значительного прогресса, но ...Быстрая переменная доступность

 

class Cat { 

     var catName, catBreed, catColor: String 
     var catAge, catWeight: Int 

     init(name:String, age:Int, weight:Int, breed:String, color:String) 

     { 
      catName = name 
      catAge = age 
      catWeight = weight 
      catBreed = breed 
      catColor = color 
     } 

    func calculateAge (catAge: Int) -> Int 
    { 
     var humanYears = 0 

     if catAge == 1 { 
      humanYears = 15 
     } else if catAge == 2 { 
      humanYears = 24 
     } else if catAge > 2 { 
      humanYears = (24 + (catAge * 4)) 
     } 
     print ("Your cat is \(humanYears) human years old!") 
     return humanYears 
    } 
    func createCats(name: String, age: Int, weight: Int, breed: String, color: String) -> String 
    { 
     let humanYears = calculateAge(catAge: age) 
     let catInfo : String = "\(name) is a \(color) \(breed) who weights \(weight) named \(name), and he is \(humanYears) human years old." 
     print (catInfo) 
     return catInfo 
    } 
    } 
Cat.createCats() 

Я получаю сообщение об ошибке при Cat.createCats() с указанием использования экземпляра элемента «createCats» по типу «Cat»; Вы имели в виду использовать значение типа «Cat» вместо этого?

Я попытался положить кот в(), я попытался назвать все мои переменными там ...

+0

Когда вы ожидаете этот оператор печати для запуска? Вы не можете просто иметь плавающий код в типе - вам нужно поместить его в функцию. – Hamish

+0

Просто поставьте 'print' над' return humanYears'. Тогда самое время, вызванное выводом 'calculateAge', будет напечатано. – beeth0ven

+0

Привет, Хэмиш, я ожидаю, что он запустится в конце функции. Я попытался поставить его выше возвращения, как было предложено. Поскольку я запускаю это на игровой площадке, я ожидал увидеть что-то на боковой панели. У меня нет ошибок, но результатов нет. –

ответ

0

Как я вижу в вашем коде, вы заново объявить переменный «humanYears». Один из них сразу после класса, а второй - в функции «calculateAge». Измените вашу функцию «вычислить», как показано ниже:

func calculateAge (catAge: Int) -> Int { 

     if catAge == 1 { 
      humanYears = 15 
     } else if catAge == 2 { 
      humanYears = 24 
     } else if catAge > 2 { 
      humanYears = (24 + (catAge * 4)) 
     } 
     return humanYears 
} 
+0

Я внес некоторые изменения. Помимо вычисления человеческих лет, я должен иметь возможность создавать экземпляр Cat со значениями по умолчанию, а также создавать экземпляр Cat с альтернативными значениями и каждый раз печатать детали Cat. –

+0

не получите вашу точку, пожалуйста, добавьте обновленный код для более полного понимания. – Harish

+0

Я обновил исходное сообщение, это не правильный способ сделать это? –

0

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

Еще раз спасибо за все в вашей помощи,

class Cat 
{ 

    func calculateAge (catAge: Int) -> String 
{ 
    var humanYears = 0 

    if catAge == 1 { 
     humanYears = 15 
    } else if catAge == 2 { 
     humanYears = 24 
    } else if catAge > 2 { 
     humanYears = (24 + (catAge * 4)) 
    } 
    return "Your cat is \(humanYears) human years old!" 
} 

func createCats(name: String = "Fluffy", age: Int = 1, weight: Int = 3, breed:   String = "tabby", color: String = "brown") -> String 
{ 
    var catInfo : String 
    let humanYears = calculateAge(catAge: age) 
    catInfo = "\(name) is a \(color) \(breed) who weights \(weight) pounds  named \(name), and he is \(humanYears) human years old." 
    print (catInfo) 
    return catInfo 
} 
} 

let firstCat = Cat() 
firstCat.createCats() 
let secondCat = Cat() 
secondCat.createCats(name: "bob") 
Смежные вопросы