2017-09-06 11 views
2

次のスニペットのtest1()コンパイルでは、test2()はコンパイルしません。タイプパラメータIntの変数をリクエストパラメータに代入する方法は?要求パラメータにint変数を割り当てる方法は?

スウィフトバージョン3.1.1(SWIFT-3.1.1-RELEASE) ターゲット:x86_64版 - 未知のlinux-gnuの1がintではないためだ

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 
} 
+0

ジャスト 'req.parameters [ "ID"]を使用してint型= id'。? – AlexSmet

+0

コンパイルされません。 'エラー:オプションの型の値 'Parameters?'アンラップされていない。あなたは '!'を使うつもりでしたか? 'エラー:プロパティに割り当てることができません: 'int'はget-onlyプロパティです。 'または' '?' – gubaer

+0

' req.parameters ["id"] !. int = id'はコンパイルされません。 – gubaer

答えて

1

。さまざまな型(Int、Int32、Float、Double、UIntなど)に変換できるものです。コンパイラは、呼び出しを行う型に変換できるかどうかを判断します。 2番目のケースでは、コンパイラはidにIDを割り当てたときに、そのIDがIntであると判断しました。そして、明らかに、IntはParametersに代入できませんか?

1

は(スウィフト4、蒸気2で動作)以下のことを試してみてください。

func test2() throws { 
    let req = Request.makeTest(method: .get) 
    let id = 1 
    req.parameters["id"] = Parameters(id) 
} 
関連する問題