2016-06-22 4 views
0

Я недавно написал этот код в Swift ниже. Я использовал структуры для получения точки (которая является источником), а затем размер прямоугольника, тогда средняя структура, которая вычисляет центральную точку прямоугольника. По какой-то причине моя функция calc() не хочет возвращать значения, которые она вычисляет, и выдает ошибку из ниоткуда:Swift: невозможно преобразовать возвращаемое выражение типа '(Int, Int)' для возврата типа 'Int'

Невозможно преобразовать возвращаемое выражение типа '(Int, Int)' для возврата типа 'Int'

Кто-нибудь знает, почему я получаю ошибку?

Swift код:

struct Point{ 
    var x:Int, y:Int; 
} 

struct Sise{ 
    var height:Int, width:Int; 
} 

struct Mid{ 
    var origin:Point, sise:Sise; 
    func calc() -> Int{ 
     var x = origin.x + (sise.width/2) 
     var y = origin.y + (sise.height/2) 
     return (x,y) 
    } 
} 

var origin = Point(x: 0,y: 0) 
var sise = Sise(height:100, width:100) 
var result = Mid(origin:origin,sise:sise) 
result.calc() 

ПРИМЕЧАНИЕ

английский не является моим родным языком, и извините за грамматические ошибки.

+1

'calc()' возвращает * кортеж * из двух целых чисел, поэтому он должен быть объявлен как 'func calc() -> (Int, Int)'. (На самом деле сообщение об ошибке довольно понятно.) –

+0

Зачем возвращать '(Int, Int)', когда у вас уже есть 'Point' struct с 2' Int '? – Alexander

ответ

1

В структуре Mid вы объявляете, что ваша функция с типом возвращаемого значения является Int, но в этой функции вы возвращаете кортеж (x, y). Это должно быть:

struct Mid{ 
    var origin:Point, sise:Sise; 
    func calc() -> (Int,Int) { 
     var x = origin.x + (sise.width/2) 
     var y = origin.y + (sise.height/2) 
     return (x,y) 
    } 
} 
+0

ДА! Я получил это сейчас, спасибо! Я совсем забыл об этом! – GeorGios