[swift-evolution] Pitch: really_is and really_as operators

Vladimir.S svabox at gmail.com
Thu Aug 25 16:15:21 CDT 2016


 > let fooIsNSString = foo is NSString           // true

I don't understand. Why is so? On which version of Swift did you try this?

IBM Swift Sandbox
Swift Ver. 3.0 (Aug 23, 2016)
Platform: Linux (x86_64)

import Foundation

let foo: Any = "Foo"
let bar: Any = NSString(string: "Bar")

let fooIsString = foo is String
print(fooIsString) // true

let fooIsNSString = foo is NSString
print(fooIsNSString) // false! as expected



On 25.08.2016 22:40, Adrian Zubarev via swift-evolution wrote:
> Is that what you guys wanted to achieve?
>
> |@inline(never) func opaqueCast<T,U>(_ x: T, _: U.Type) -> Bool { return x
> is U } let foo: Any = "Foo" let bar: Any = NSString(string: "Bar") let
> fooIsString = foo is String // true opaqueCast(type(of: foo),
> String.Type.self) // true let fooIsNSString = foo is NSString // true
> opaqueCast(type(of: foo), NSString.Type.self) // false let barIsString =
> bar is String // true opaqueCast(type(of: bar), String.Type.self) // false
> let barIsNSString = bar is NSString // true opaqueCast(type(of: bar),
> NSString.Type.self) // true |
>
> Joe Groff showed me this little trick when |is| cast was bugged in some
> Xcode beta for Swift 1.2.
>
>
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>


More information about the swift-evolution mailing list