> Le 22 mars 2016 à 18:14, Erica Sadun via swift-evolution > <[email protected]> a écrit : > > <https://gist.github.com/erica/b7f4226b8201945602f2#motivation>Motivation > > Swift's existing set of build configurations specify platform differences, > not module commonalities. For example, UIKit enables you to write view code > supported on both iOS and tvOS. SpriteKit allows common code to render on OS > X, iOS, and tvOS that would require an alternate UI on Linux. Testing for > Metal support or Media Player would guard code that will not function on the > simulator. If the simulator adopted these modules at some future time, the > code would naturally expand to provide compatible execution without source > modification. > > #if canImport(UIKit) > // UIKit-based code > #elseif canImport(Cocoa) > // OSX code > #elseif > // Workaround/text, whatever > #endif Not sure if its because I mainly live in a world of multi-architectures C cross-compiling, but for example if you canInclude some powerpc header, it does’t mean that your are compiling for powerpc. So, IMO, I think that #if didImport(Cocoa) would be a better wording. This effectively prevent one from doing:
#if didImport(Cocoa) import Cocoa // Pointless, won’t work #endif So for conditionally import, we would still be forced to use some form of #if os(OSX) Dany
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
