Я все еще относительно новичок в Swift, поэтому у меня возникли некоторые проблемы с правильным синтаксисом. Вот мой код для класса Дата , который имеет методы isLeapYear и daysInMonth . У меня проблемы с дополнительными функциями для этих методов:
class Date {
var day, month, year : Int
init (day : Int, month : Int, year : Int) {
self.day = day
self.month = month
self.year = year
}
func isLeapYear(y : Int? = self.year) -> Bool {
var x = false
if y % 4 == 0 {x = true}
return x
}
//Returns the amount of days in a given month
func daysInMonth(month : Int? = self.month, year : Int? = self.year) -> Int? {
let _31_day_months = [1, 3, 5, 7, 8, 10, 12]
let _30_day_months = [4, 6, 9, 11]
if month == 2 {
if self.isLeapYear(y : year) {return 29} else {return 28}
}
else if _31_day_months.contains(month) {return 31}
else if _30_day_months.contains(month) {return 30}
else {return nil}
}
}
Что я хочу сделать с func isLeapYear(y : Int? = self.year) -> Bool
, так это то, что когда я вызываю isLeapYear, а y не указывается, он автоматически устанавливается на self.year . Однако я получаю следующую ошибку:
использование неразрешенного идентификатора 'self'
Я также получаю ошибку
значение необязательного типа "Int? должен быть развернут в значение типа 'Int'
Я знаю, что должен использовать ! , но я не знаю точно, как и где, я пытался сделать if y! % 4 == 0
, но это только ухудшило ситуацию.
Я бы тоже хотел сделать то же самое для метода daysInMonth