我对 swift 还比较陌生,所以我在使用正确的语法时遇到了一些问题。这是我的Date类的代码,它具有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做同样的事情