天天看點

swift 類型轉換

var movieCount = 0

var songCount = 0

for item in library {

if item is Movie {

movieCount += 1

} else if item is Song {

songCount += 1

}

if let movie = item as? Movie {

print("Movie: \(movie.name), dir. \(movie.director)")

} else if let song = item as? Song {

print("Song: \(song.name), by \(song.artist)")

Swift provides two special types for working with nonspecific types:

<code>Any</code> can represent an instance of any type at all, including function types.

<code>AnyObject</code> can represent an instance of any class type.

To discover the specific type of a constant or variable that is known only to be of type ​<code>​Any​</code>​ or ​<code>​AnyObject​</code>​, you can use an ​<code>​is​</code>​ or ​<code>​as​</code>​ pattern in a ​<code>​switch​</code>​ statement’s cases. The example below iterates over the items in the ​<code>​things​</code>​ array and queries the type of each item with a ​<code>​switch​</code>​ statement. Several of the ​<code>​switch​</code>​ statement’s cases bind their matched value to a constant of the specified type to enable its value to be printed:

for thing in things {

switch thing {

case 0 as Int:

print("zero as an Int")

case 0 as Double:

print("zero as a Double")

case let someInt as Int:

print("an integer value of \(someInt)")

case let someDouble as Double where someDouble &gt; 0:

print("a positive double value of \(someDouble)")

case is Double:

print("some other double value that I don't want to print")

case let someString as String:

print("a string value of \"\(someString)\"")

case let (x, y) as (Double, Double):

print("an (x, y) point at \(x), \(y)")

case let movie as Movie:

print("a movie called \(movie.name), dir. \(movie.director)")

case let stringConverter as (String) -&gt; String:

print(stringConverter("Michael"))

default:

print("something else")

// zero as an Int

// zero as a Double

// an integer value of 42

// a positive double value of 3.14159

// a string value of "hello"

// an (x, y) point at 3.0, 5.0

// a movie called Ghostbusters, dir. Ivan Reitman

// Hello, Michael

------------------越是喧嚣的世界,越需要甯靜的思考------------------

合抱之木,生于毫末;九層之台,起于壘土;千裡之行,始于足下。

積土成山,風雨興焉;積水成淵,蛟龍生焉;積善成德,而神明自得,聖心備焉。故不積跬步,無以至千裡;不積小流,無以成江海。骐骥一躍,不能十步;驽馬十駕,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。蚓無爪牙之利,筋骨之強,上食埃土,下飲黃泉,用心一也。蟹六跪而二螯,非蛇鳝之穴無可寄托者,用心躁也。