I figured it out. The real problem is that .json accepts AnyObject, and the 
Dictionary is not AnyObject (not sure what this change is, since it worked in 
Swift 2). Anyway, that confused the type inference, which resulted in the red 
herring error message about the closure assignment.


> On Sep 9, 2016, at 14:34 , Rick Mann via swift-users <swift-users@swift.org> 
> wrote:
> 
> I have some code that implements an HTTP server. You use it like this:
> 
> server["/some/path"] =
> { inReq in
>   return .ok(.json(["key" : "value"]))
> }
> 
> ".ok" is a case in the HttpResponse enum.
> 
> The subscript on "server" above looks like this:
> 
> class HttpServer {
>   typealias Handler = (HttpRequest) -> HttpResponse
> 
>   subscript (path: String) -> Handler?
>   {
>       get { return nil }
>       set ( newValue )
>       {
>           ...store in dictionary of path:Handler...
>       }
>   }
> }
> 
> Unfortunately, in Swift 3, I get "Cannot assign value of type '(_) -> _' to 
> type 'HttpServer.Handler?'"
> 
> It seems the type inference is working differently? I tried { (inReq: 
> HttpRequest) in ... }, but I got the same error with a slightly different 
> type signature.
> 
> Can anyone tell me what's changed?
> 
> TIA,
> 
> -- 
> Rick Mann
> rm...@latencyzero.com
> 
> 
> _______________________________________________
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users


-- 
Rick




-- 
Rick Mann
rm...@latencyzero.com


_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to