(23) [Swift] 유형 전환과 판단

1295 단어
1. 아래 코드를 상황 코드로 한다
class Shape{
    
}
class Circle:Shape{
    
}
class Rectangle:Shape{
    
}
var shape  = Shape()
var circle = Circle()
var rect = Rectangle()
var array = Array()
array.append(circle)
array.append(shape)
array.append(rect)
array.append("aaaa")
array.append({return "aaaaa"})

2. is는 대상이 특정한 클래스나 그 하위 클래스에 속하는지 판단하는데 OC의 isKindof 방법에 해당한다
for item in array{
    if item is Rectangle{
        print("Rectangle:\(item)")
    }else if item is Circle{
        print("Circle:\(item)")
    }
    
}

3.as as? as! 바꾸다
  • as? 변환에 성공한 후optional 형식의 값입니다. 변환에 실패했습니다. nil
  • let s1 = shape as? Circle
    s1.dynamicType
    
  • as! 변환이 성공한 후 원래 유형이 목표 유형이 아니며 변환 실패 오류 보고
  • let s2 = array.first as! Shape
    s2.dynamicType   //Circle.Type
    //let s3 = array.first as! Rectangle //  
    
  • as는 컴파일러도 반드시 성공할 수 있다는 것을 알았을 때 as
  • 를 사용할 수 있다.
    //   
    let s4 = shape as Shape
    s4.dynamicType
    //   
    for item in array{
        switch item {
        case is Circle:
            print("circle")
        case is Rectangle:
            print("rectangle")
        case let s3 as Shape:
            print(s3)
        default:
            break
        }
    }
    

    좋은 웹페이지 즐겨찾기