2017-02-20 3 views
-3

Интересно, почему это не работает:Невозможно преобразовать возвращаемое выражение типа Int в Int

func removingOnce (_ item: Int, from array:[Int]) -> [Int]{ 


var intToReturn :Int? 
intToReturn = 0 

for ob in array5{ 

    if (ob == item){ 
    intToReturn = item 
    } 
} 

return intToReturn 
} 

Это предупредит меня ошибка: Не удается преобразовать выражение типа Int вернуться типа Int.

Это не имеет смысла на всех

+1

'-> [Int]' не означает ли это, что return должен быть массивом 'Int'? – Larme

+0

ваш тип возврата - это массив из Int, но возвращающий int – karthikeyan

+0

Вы имеете в виду квадратные скобки, показывающие, что я хочу вернуть массив объектов int? –

ответ

1

Предупреждение читает

Cannot convert an expression of type Int to return type [Int]

а не как вы заявили его. (Я тестировал в Playground)

Причина вашей ошибки является то, что вы возвращаете значение Int intToReturn, но в соответствии с определением метода, он должен возвращать массив Ints ->[Int]

Либо изменить возвращаемое значение полученный массив Int или изменить тип возврата в определении метода на ->Int?

Кроме того, вы объявляете intToReturn в качестве дополнительного значения Int. (Int?), но сразу после этого вы назначаете ему значение, и он никогда не будет ник. Достаточно:

var intToReturn:Int = 0 or 
var intToReturn = 0 
1

Попробуйте

[] MENAS массив

func removingOnce (_ item: Int, from array:[Int]) -> Int{ 


var intToReturn :Int? 
intToReturn = 0 

for ob in array5{ 

    if (ob == item){ 
    intToReturn = item 
    } 
} 

return intToReturn 
} 
1

Это лучшее решение, на мой взгляд, чтобы сделать этот метод:

func removingOnce (_ item: Int, from array:[Int]) -> Int? { 
    for ob in array { 
     if (ob == item){ 
      return ob 
     } 
    } 
    return nil 
} 

Проблема была возвращающей стоимостью. Вы хотели вернуть Int и в функцию вы возвращаете массив Ints.

+0

хорошо, я понимаю сейчас. –

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