SWIFT-デフォルト演算子


用語
演算子には、単項、二項、三項の演算子があります.
  • 単項演算子(-a, !b, c!など)は、オブジェクトの前後に密着して使用される演算子です.
  • この演算子は、2 + 3のような2つのオブジェクト間にある演算子です.
  • 三韓演算子はa ? b : cの形で存在し、SWIFTでは3つの演算子はこの1つの演算子しか存在しない.
  • 割付演算子
    代入演算子は、値を初期化または変更します.
    定数、変数ともに使用できます.
    let b = 1
    var a = 2
    a = b
    // a의 값은 10
    図面を使用すると、複数の値を一度に割り当てることができます.
    let (x, y) = (3, 4)
    // x는 3, y는 4의 값이 저장
    四則演算子
    SWIFTは4つの標準四則演算子をサポートし、すべての数値形式で使用できます.
  • 加算(+)
  • マイナス(-)
  • 乗数(*)
  • 除算(/)
  • 1 + 2		// 3
    4 - 3		// 1
    5 * 6		// 30
    9.0 / 4.5	// 2.0
    SWIFTは4則演算の値オーバーフローを許さない.
    必要に応じて、オーバーフロー演算子を使用してサポートできます.
    加算演算子は、文字列をマージするために使用できます.
    "hello, " + "world"
    // equals "hello, world"
    残りの演算子a % bなどの残りの演算をサポートします.
    9 % 4		// 1
    -9 % 4		// -1
    単項負数演算子
    数値は、-で表される単項負数演算子によって変更されます.
    let three = 3
    let minusThree = -three			// minusThree == -3
    let plusThree = -minusThree 	// plusThree == 3
    単項正数演算子+で表される単項正数演算子は、シンボルに影響を及ぼさない.
    let minusSix = -6
    let alsoMinusSix = +minusSix 	// alsoMinusSix == -6
    アサイメント演算子の合成
    a=a+2は、付与演算(=)と加算演算(+)からなる演算合成であり、+=という形で省略して用いられる.
    var a = 1
    a += 2
    // a == 3
    に注意
    合成代入演算子は値を返さない.つまり、let b = a += 2のような文法は使えません.
    比較演算子
    SWIFTは、標準Cが提供するすべての比較演算子をサポートします.
  • (a=b)
  • のように
  • (a!=b)
  • とは異なります
  • 大(a>b)
  • 小(a
  • (a>=b)
  • 以上
  • が(a<=b)
  • 以下である
    各比較演算は、真または偽の値を返します.
    1 == 1   // true
    2 != 1   // true
    2 > 1    // true
    1 < 2    // true
    1 >= 1   // true
    2 <= 1   // false
    比較演算はif-elseなどの条件構文でよく使用されます.
    let name = "seongbin"
    if name == "seongbin" {
    	print("hi, seongbin")
    } else {
    	print("who are you, \(name)?")
    }
    // Prints "hi, seongbin"
    同じタイプの値を持つ2つのtupleを比較できます.
    tupleの比較は左から右へ,一度に1つの値しか比較しない.
    この比較は2つの異なる値を比較するまで実行される.
    ( 1, "apple" ) < ( 2, "bird" ) 		// true
    ( 3, "cat" ) < ( 3, "dog" )    		// true
    ( 4, "egg" ) == ( 4, "egg" ) 		// true
    比較演算子がこの値を比較できる場合にのみ、比較できます.
    ( "blue", -1 ) < ( "purple", 1) 	// true
    ( "a", false ) < ( "b", true ) 		//error, Boolean 값은 < 연산자로 비교할 수 없다.
    三項条件演算子
    3つの条件演算子は、question ? answer1 : answer2の構造を有する.question条件がtrueの場合、answer1がfalseの場合、answer2が実行される.
    3つの条件演算子はif-elseコードの略です.
    if question {
    	answer1
    } else {
    	answer2
    }
    3つの条件演算の実際の例
    let contentHeight = 40
    let hasHeader = true
    let rorwHeight = contentHeight + ( hasHeader ? 50 : 30 )
    // rowHeight == 40 + 50 == 90
    3つの条件演算子はコードを短縮し、毒性を高めた.
    Nil連結演算子
    nil連結演算子はa ?? b形式の演算子である.
    オシェルaを除去し、anilであればbを返還する.
    このnil連結演算子は、以下のコードの略である.
    a != nil ? a! : b
    3つの条件演算子を使用し、
    開いているanilでない場合、aが開きます.
    オープンanilでなくfalseである場合、bが返却されることを意味する.
    理解を助けるための例
    let defaultName = "seongbin"
    var userDefindedName: String? // 이 값은 defaults 값이 nil
    
    var nameToUse = userDefindedName ?? defaultName
    // userDefindedName 값이 nil이므로,
    // nameToUse 값은 defaultName인 "seongbin"
    
    userDefindedName = "Lim"
    nameToUse = userDefindedName ?? defaultName
    // userDefindedName 값이 nil이 아니므로,
    // nameToUse 값은 "Lim"
    範囲演算子
    閉じた範囲演算子(a..b)の形式で範囲の開始および終了の演算子.
    for inサイクルでよく使われます.
    for index in 1...5 {
    	print("\(index) times 5 is \(index * 5)")
    }
    // 1 times 5 is 5
    // 2 times 5 is 10
    // 3 times 5 is 15
    // 4 times 5 is 20
    // 5 times 5 is 25
    セミクローズドレンジ演算子(a..<b)の形態で、aからb未満の範囲である.
    つまり、価格はaからb-1までです.
    通常、配列には配列サイズ-1のインデックスがあるので、この半閉鎖範囲演算子は配列の処理に役立ちます.
    let names = [ "짱구", "철수", "훈이", "맹구", "이슬" ]
    let count = names.count
    for i in 0..<count {
    	print("Person \(i + 1) is called \(names[i])")
    }
    // Person 1 is called 짱구
    // Person 2 is called 철수
    // Person 3 is called 훈이
    // Person 4 is called 맹구
    // Person 5 is called 이슬
    いちほうこうはんい[a..][..a]の形式で、範囲の開始または終了に使用する範囲演算子のみを指定します.
    指定した開始値または終了値は範囲内に含まれます.
    for name in names[2...] {
    	print(name)
    }
    // 훈이
    // 맹구
    // 이슬
    
    for name in names[...2] {
    	print(name)
    }
    // 짱구
    // 철수
    // 훈이
    単方向範囲演算子は、下付き文字だけでなく、次の特定の値が含まれているかどうかを判断するときにも使用できます.
    let range = ...5
    range.contains(7)	// false
    range.contains(4)	// true
    range. contains(-1) // true
    論理演算子
    SWIFTは3つの標準論理演算子をサポートします.
  • 論理否定NOT(!a)
  • 論理AND(a&b)
  • 論理和OR(a||b)
  • 論理否定演算子
    let allowedEntry = false
    
    if !allowedEntry {
    	print("ACCESS DENIED")
    }
    // Prints "ACCESS DENIED"
    論理乗算演算子
    let enteredDoorCode = true
    let passedRetinaScan = false
    
    if enteredDoorCode && passedRetinaScan {
    	print("Welcome!")
    } else {
    	print("ACCESS DENIED")
    }
    // Prints "ACCESS DENIED"
    論理演算子
    let hasDoorKey = false
    let knowsOverridePassword = true
    
    if hasDoorKey || knowsOverridePassword {
        print("Welcome!")
    } else {
        print("ACCESS DENIED")
    }
    // Prints "Welcome!"
    
    論理演算子の組合せ
    2つ以上の論理演算子を組み合わせて使用できます.
    if enteredDoorCode && passedRetinaScan || hasDoorKey || knowsOverridePassword {
        print("Welcome!")
    } else {
        print("ACCESS DENIED")
    }
    // Prints "Welcome!"
    SWIFTの論理演算子&&および||は、左側の式を優先順位として論理計算を行う.
    明示的なかっこ
    論理演算子の適用優先度を演算子に渡すのではなく、カッコを使用して計算順序を明示的に指定できます.
    if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword {
        print("Welcome!")
    } else {
        print("ACCESS DENIED")
    }
    // Prints "Welcome!"
    カッコを使用すると可読性が向上し、コードの意図を明確にするのに役立ちます.