Как назначить переменную int параметру запроса?
В следующем фрагменте test1() компилируется, test2() нет. Как назначить переменную типа Int
параметру запроса?
Swift версия 3.1.1 (swift-3.1.1-RELEASE) Цель: x86_64-unknown-linux-gnu
import Testing
import HTTP
func test1() throws {
let req = Request.makeTest(method: .get)
//OK compiles
req.parameters["id"] = 1
}
func test2() throws {
let req = Request.makeTest(method: .get)
let id = 1
// NOK doesn't compile
// compiler error:
// /path/to/file.swift:12:28: error: cannot assign value of type 'Int' to type 'Parameters?'
// req.parameters["id"] = id
// ^~
req.parameters["id"] = id
}
2 ответа
Попробуйте следующее (работает со Swift 4, Vapor 2):
func test2() throws {
let req = Request.makeTest(method: .get)
let id = 1
req.parameters["id"] = Parameters(id)
}
Это потому, что 1 не int. Это вещь, которая может быть преобразована в различные типы (например, Int, Int32, Float, Double, UInt и т. Д.), И компилятор выяснит, может ли он быть преобразован в тип, который заставляет вызов работать. Во втором случае компилятор решил, когда вы присвоили id, что id будет Int. И, очевидно, Int не может быть назначен на параметры?