无法将“Int.Type”类型的值转换为预期的参数类型“Int”

时间:2017-10-15 19:34:55

标签: swift

我试图在if语句中调用一个函数,但我总是得到错误消息“无法将类型'Int.Type'的值转换为期望的参数类型'Int”。我做错了什么?

func isLeapYear(year: Int) -> Bool {

    if year % 4 != 0{
        return false
    }
    else if year % 100 != 0{
        return true
    }
    else if year % 400 != 0{
        return false
    }
    else{
        return true
    }
}

func nextDay(year: Int, month: Int, day: Int) -> (year: Int, month: Int, day: Int) {

    if isLeapYear(year: Int) == true {
        if day < daysOfMonths_leap[month-1] {
            return ( year, month, day + 1 ) 
        }else {
            if month == 12 {
                return (year + 1, 1, 1)
            } else {
               return (year, month + 1, 1)
             }
         }
    }
}

2 个答案:

答案 0 :(得分:0)

当您调用某个函数时,应输入其值

if isLeapYear(year: year) == true {

if isLeapYear(year: Int(1)) == true {

答案 1 :(得分:0)

您需要将参数的值添加到函数中,而不是参数的类型。

这里我认为你需要使用nextDay函数的参数。

当您调用具有参数的函数时,您需要为函数参数提供值,因为此值将在函数内使用。值类型应与参数类型相同。在这种情况下Int。

试试这个:

func isLeapYear(year: Int) -> Bool {

    if year % 4 != 0{
        return false
    }
    else if year % 100 != 0{
        return true
    }
    else if year % 400 != 0{
        return false
    }
    else{
        return true
    }
}

func nextDay(year: Int, month: Int, day: Int) -> (year: Int, month: Int, day: Int) {

    // Your function call
    if isLeapYear(year: year) == true {
        // Your code
    }

    // Hardcorded values (year 2, month 2, days 2)
        return (2, 2, 2)
    }