Swift-类型转换
来源:互联网 发布:java transient 方法 编辑:程序博客网 时间:2024/06/09 18:58
import UIKit
//***************************
//
// 1.定义基类MediaItem
// 2.定义子类Movie
// 3.定义子类Song
//
//***************************
class MediaItem {
var name: String
init(name: String){
self.name= name
}
}
class Movie:MediaItem{
var director: String
init(name: String,director: String){
self.director= director
super.init(name:name)
}
}
class Song:MediaItem{
var artist: String
init(name: String,artist: String) {
self.artist= artist
super.init(name:name)
}
}
let library = [
Movie(name: "Movie1",director: "Dir1"),
Movie(name: "Movie2",director: "Dir2"),
MediaItem(name: "Media1"),
Song(name: "Song1",artist: "Artist1"),
Song(name: "Song2",artist: "Artist2")
]
//*****************************************
//
// 1.类型检查:
// 用is来检查一个instance是否属于特定class
//
//*****************************************
var moviecount =0,songcount = 0
for itemin library {
if item is Movie {
moviecount++
}elseif item is Song {
++songcount
}
}
moviecount//2
songcount //2
//*****************************************
//
// 1.类型转换:
// 用as来转换到它的子类型,
// 用as?可以转换的同时强制解包
//
//*****************************************
for itemin library {
if let movie =item as? Movie{
println("movies name =\(movie.name), director =\(movie.director)")
}elseif let song = itemas?Song{
println("songsname = \(song.name), artist =\(song.artist)")
}else{
println("Just aMedia")
}
}
//*****************************************
//
// Any和AnyObject的转换
// AnyObject:可以代表任何class的实例
// Any:可以表示任何类型,除了方法类型
//
//*****************************************
let someOBJArray: [AnyObject]= [
Movie(name: "Movie1",director: "Dir1"),
Movie(name: "Movie2",director: "Dir2")
]
//逐项转为movie
for objectin someOBJArray {
let movie = object asMovie
println("Movie: \(movie.name),dir:\(movie.director)")
}
//整个数组转换为[Movie]
for moviein someOBJArrayas [Movie] {
println("Movie: \(movie.name),dir:\(movie.director)")
}
var things: [Any] = []//or var things = [Any]()
things.append(0)
things.append(0.0)
things.append(7)
things.append(12.34)
things.append(-12.34)
things.append("hello")
things.append((1.0,2.0))
things.append(Movie(name:"Movie1",director: "D1"))
//在switch语句的case中使用as来检查+匹配+转换到一个规定的类型
for thingin things {
switch thing {
case0asInt ://相当于let zeroas Int where zero == 0
println("zero as an Int")
case 0asDouble:
println("zero as an Double")
case let someIntas Int ://if let someInt =thing as Int
println("an integer value of \(someInt)")
case letsomeDouble as Doublewhere someDouble >0 :
println("a positive double value of\(someDouble)")
case is Double://if thing isDouble
println("some other double value")
case letsomeString as String:
println("a string value of \(someString)")
case let(x, y) as (Double,Double):
println("and (x, y) point at\(x), \(y)")
case letmovie as Movie:
println("a movie instance")
default:
println("something else")
}
}
for thingin things {
if let zero =thing as? Int{
if zero == 0{
println("zero as an Int")
}
}
}
- Swift类型转换
- 18.Swift-类型转换
- Swift-类型转换
- swift 类型转换
- Swift 对象类型转换
- swift 对象类型转换
- Swift-类型转换
- swift 类型转换
- 细说Swift类型转换
- swift-9 类型转换
- Swift类型转换
- Swift AnyObject 类型转换
- swift-类型转换
- Swift 类型转换
- Swift类型检查与转换
- Swift学习:2.18 类型转换
- Swift 学习笔记 - 类型转换
- Swift Assertion断言/类型别名/类型转换
- Linux Filesystem: 解析 Linux 中的 VFS 文件系统机制
- 语音编码解码(一)——speex
- 图论类算法备忘
- tee的简单使用
- XE7
- Swift-类型转换
- Linux Mint (应用软件— 图片浏览器:gThumb和Image Viewer)
- 【.NET机房重构】——UML图新认识
- UIView的layoutSubviews和drawRect方法何时调用
- Java中弹出对话框中的几种方式
- WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers
- adb shell下查看sqlite数据库
- eclipse黑色背景和字体的设置
- Cygwin重新配置ssh