Hi All.

My problems are so weird that I don’t even know what to put in the subject line.

I’m using the latest Swift 3 snapshot, and I’m trying to write a bridge from 
[String] to (const char * const *)

Here’s my code:

public struct ArrayBridge<SwiftType,CType> {

    let originals  :[SwiftType]
    let translated :[CType]
    //let pointers   :[UnsafePointer<CType>?]

    init(array :[SwiftType], transform: @noescape (SwiftType) throws -> CType) 
throws {
        self.originals = array
        self.translated = try array.map(transform)
        let pointerArray = self.translated.map {
            guard let result = UnsafePointer<CType>($0) else {
                fatalError()
            }
            return result
        }
    }
}

This gives the error:

    Expression type '[_]' is ambiguous without more context
or Ambigious reference to member ‘map'

on the line “let pointerArray = self.translated.map {"

Some digging says that this may be helped if I explicitly specify the return 
type for the closure:

public struct ArrayBridge<SwiftType,CType> {

    let originals  :[SwiftType]
    let translated :[CType]
    //let pointers   :[UnsafePointer<CType>?]

    init(array :[SwiftType], transform: @noescape (SwiftType) throws -> CType) 
throws {
        self.originals = array
        self.translated = try array.map(transform)
        let pointerArray = self.translated.map { item -> UnsafePointer<CType> in
            guard let result = UnsafePointer<CType>(item) else {
                fatalError()
            }
            return result
        }
    }
}

This gives the error:

    Cannot invoke initializer for type 'UnsafePointer<CType>' with an argument 
list of type '((CType))’ 

on the line “ guard let result = UnsafePointer<CType>(item) else {“


Can anyone shed some light on this? What is a type with parentheses around it? 
I’ve also gotten errors like, “argument (_) -> _ does not match _ -> _”

Thanks!

-Kenny




_______________________________________________
swift-users mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-users

Reply via email to