제3장.연산자

19302 단어 연산자
Swift에서 부동점수를 추출하여 연산할 수 있습니다 (%)
 

용어


연산자는 한 개, 두 개와 세 개의 연산자가 있다.
 
하나의 연산자가 하나의 대상을 조작한다. 예를 들어 -a.
  
하나의 연산자는 전치 연산자와 후치 연산자로 나뉘는데 전치 연산자는 조작 대상을 바로 배열해야 한다. 예를 들어!b, 후치 연산자는 조작 대상의 뒤, 예를 들어 i++,
 
 
두 눈 연산자는 두 개의 조작 대상을 조작한다. 예를 들어 2+3.두 작업 대상 사이에 나타나기 때문에 중치입니다.
 
세 개의 연산자는 세 개의 조작 대상을 조작한다. C 언어와 마찬가지로 Swift는 세 개의 연산자가 하나밖에 없다. 바로 세 개의 조건 연산자 a?b : c.
 
연산자의 영향을 받는 값을 조작수라고 하는데 표현식 1+2에서 더하기 +는 쌍안 연산자이고 그의 두 조작수는 값 1과 2이다.
 

대입 연산자


부수 연산 a=b는 b의 값으로 a의 값을 초기화하거나 업데이트하는 것을 나타낸다.
1 let b = 10 
2 var a = 5 
3 a = b 
4 // a   10

만약 값의 오른쪽이 다원 그룹이라면, 그 원소는 바로 여러 변수나 변수를 분해할 수 있다
1 let (x, y) = (1, 2) 
2 //   x   1, y   2

C 언어 및 Objective-C와 달리 Swift의 값 지정 작업은 값을 반환하지 않습니다.따라서 다음 코드가 잘못되었습니다.
1 if x = y { 
2     //  ,   x = y   
3 } 

 

수치 연산


Swift는 모든 수치 유형에서 기본 4가지 연산을 지원합니다.
 
덧셈 +
뺄셈-
곱셈*
나눗셈/
1 1 + 2       //   3 
2 5 - 3       //   2 
3 2 * 3       //   6 
4 10.0 / 2.5  //   4.0 

더하기 작업 + 문자열 맞춤법 사용:
1 "hello, " + "world"  //   "hello, world" 

 

구여연산

1 9 % 4    //   1
2 -9 % 4   //   -1 

 
주의: 음수에 대한 여분을 구할 때, 음수의 기호는 무시됩니다.이것은 a%b와 a%-b의 결과가 같다는 것을 의미한다.
 
부동점수 구여 계산
1 8 % 2.5 //   0.5 

이 예에서 8을 2.5로 나누면 3여 0.5이기 때문에 결과는 0.5이다.
 

자증과 자감 연산

1 var i = 0 
2 ++i      //   i = 1 

++i를 한 번 호출할 때마다 i의 값은 1을 추가합니다.실상
  • ++i는 i=i+1
  • --i는 i = i-1
  •  
    ++와 --전치이자 후치 연산.++i,i++,--i와 i-는 모두 효과적인 문법이다.
    차이점은 다음과 같습니다.
  • ++가 앞에 있을 때 먼저 증가한 다음에 돌아옵니다.
  • ++가 뒤에 있을 때 먼저 되돌아오고 다시 증가한다.
  • 1 var a = 0 
    2 let b = ++a // a   b   1 
    3 let c = a++ // a   2,   c   a   1 

    상술한 예에서letb=++a는 먼저 a를 1로 추가한 다음에 a의 값을 되돌려준다.그래서 a와 b는 모두 새 값이다.
    한편letc=a++는 먼저 a의 값을 되돌린 다음에 a가 1을 더한다.그래서 c는 a의 구치 1을 얻었고 a에 1을 더하면 2가 되었다.
     
    먼저 수정한 후에 이런 행위가 우리의 논리에 더욱 부합되기 때문에++i와 --i를 사용하는 것을 추천합니다.
     

    홀수 마이너스


    숫자 값의 양수 및 음수는 접두어 - (즉 음수) 를 사용하여 전환할 수 있습니다.
    1 let three = 3 
    2 let minusThree = -three       // minusThree   -3 
    3 let plusThree = -minusThree   // plusThree   3,   " 3" 

    주의: 한 개의 음표는 조작수 앞에 쓰여 있으며, 중간에 빈칸이 없습니다.
     

    단목 정호


    단일 정호 + 아무런 변경도 없이 조작수의 값을 되돌려줍니다.
    1 let minusSix = -6 
    2 let alsoMinusSix = +minusSix  // alsoMinusSix   -6 

    단목 + 는 쓸데없는 짓이지만, 단목 마이너스로 마이너스를 표현할 때, 단목 마이너스로 정수를 표현할 수 있다. 그러면 코드가 대칭미가 있을 것이다.
     

    대입 연산자


    Swift는 또한 기타 연산자와 대입 연산자=를 조합한 복합 대입 연산자를 제공하며, 가부 연산자+=는 그 중의 한 예이다.
    var a = 1 
    a += 2 // a   3 

    표현식 a+=2는 a=a+2의 약자로서 하나의 가부 연산은 가법과 부수 두 가지 일을 완성했다.
    주의: 복합 할당 연산에는 반환 값이 없습니다.let b = a + = 2와 같은 코드는 오류입니다.이것은 위에서 언급한 자증과 자감 연산자와 다르다.
     

    비교 연산

  • 는 a==b
  • 와 같다
  • a가 아닙니다!=b
  • a> b
  • 보다 큽니다.
  • a
  • 보다 크면 a>=b
  • 보다 작으면 a<=b
  •  
    각 비교 연산은 식별 표현식의 부울 값을 반환합니다.
    1 == 1   // true,   1   1 
    2 != 1   // true,   2   1 
    2 > 1    // true,   2   1 
    1 < 2    // true,   1  2 
    1 >= 1   // true,   1   1 
    2 <= 1   // false,   2   1 

    비교 연산은 if 조건과 같은 조건문에 많이 사용됩니다.
    let name = "world" 
    if name == "world" { 
        println("hello, world") 
    } else { 
        println(" , \(name),  !") 
    } 
    //   "hello, world",   `name`   "world" 

    주의: Swift도 항등==과 불항등!==이 두 비교부호는 두 대상이 같은 대상의 실례를 인용하는지 아닌지를 판단한다.더 많은 세부 사항은 유형과 구조에 있다.
     

    세 가지 조건 연산


    삼목 조건 연산의 특수성은 그것이 세 개의 조작수가 있는 연산자라는 데 있는데, 그것의 원형은 문제입니까?정답 1: 정답 2.그것은 문제의 성립 여부에 따라 둘 중 하나를 선택하는 조작을 간결하게 표현한다.
    만약 문제가 성립되면 답안 1의 결과를 되돌려준다.
    만약 성립되지 않는다면, 답안 2의 결과를 되돌려준다.
     
    여기에 계산 표의 줄이 높은 예가 있다.만약 시계 헤드가 있다면 그 줄의 높이는 내용 높이보다 50픽셀이 높아야 한다.만약 시계 헤드가 없다면, 단지 20픽셀보다 높을 뿐이다.
    1 let contentHeight = 40 
    2 let hasHeader = true 
    3 var rowHeight = contentHeight 
    4 if hasHeader { 
    5     rowHeight = rowHeight + 50 
    6 } else { 
    7     rowHeight = rowHeight + 20 
    8 } 
    9 // rowHeight   90 

    세 개의 연산자를 사용하여 단순화하면 다음을 수행할 수 있습니다.
    let contentHeight = 40 
    let hasHeader = true 
    let rowHeight = contentHeight + (hasHeader ? 50 : 20) 
    // rowHeight   90 

    두 번째 단락의 코드 예는 세 가지 조건 연산을 사용했기 때문에 한 줄의 코드는 우리로 하여금 정확한 답안을 얻을 수 있게 한다.이것은 첫 번째 코드보다 훨씬 간결하다. rowHeight를 변수로 정의할 필요가 없다. 왜냐하면 그 값은if문장에서 바꿀 필요가 없기 때문이다.
     

    구간 연산자


    Swift는 한 구간의 값을 쉽게 표현할 수 있는 두 개의 연산자를 제공합니다.폐구간과 반폐구간

    폐구간 연산자


    닫힌 구간 연산자 a...b는 a에서 b(a와 b 포함)까지의 모든 값을 포함하는 구간을 정의합니다.닫힌 구간 연산자는 한 구간의 모든 값을 교체할 때 매우 유용하다. 예를 들어 for-in 순환에서:
    for index in 1...5 { 
      println("\(index) * 5 = \(index * 5)") 
    } 
    // 1 * 5 = 5 
    // 2 * 5 = 10 
    // 3 * 5 = 15 
    // 4 * 5 = 20 
    // 5 * 5 = 25 

     

    반폐구간


    반폐구간의 실용성은 0부터 시작하는 목록 (예: 그룹) 을 사용할 때 0에서 목록의 길이를 세는 데 매우 편리하다는 데 있다. 
    let names = ["Anna", "Alex", "Brian", "Jack"] 
    let count = names.count 
    for i in 0..<count { 
        println("  \(i + 1)   \(names[i])") 
    } 
    //   1   Anna 
    //   2   Alex 
    //   3   Brian 
    //   4   Jack 

    주의: 그룹에는 4개의 원소가 있지만 0...count는 반폐구간이기 때문에 3까지만 셀 수 있습니다.
     

    논리 연산


    논리 연산의 조작 대상은 논리 브리 값이다.Swift는 C 언어 기반의 세 가지 표준 논리 연산을 지원합니다.
      
    논리 비!a
    논리와 a & b
    논리 또는 a | | b
     

    논리적 오류


    논리 비연산!a 부울 값을 반대로 하여true는false,false는true로 바꿉니다.
    그것은 작업 수 앞에 나타나야 하며 빈칸을 넣지 않는 선행 연산자이다.a가 아닌 것으로 읽으면 다음과 같습니다.
    let allowedEntry = false 
    if !allowedEntry { 
        println("ACCESS DENIED") 
    } 
    // prints "ACCESS DENIED" 

     

    논리와


    논리와 a&&b는 a와 b의 값이true일 때만 전체 표현식의 값이true임을 나타낸다.
     
    임의의 값이false라면 전체 표현식의 값은false입니다.사실상, 만약 첫 번째 값이false라면, 두 번째 값을 계산하지 않을 것이다. 왜냐하면 그것은 이미 전체 표현식의 결과에 영향을 줄 수 없기 때문이다.이것은 단락 계산이라고 불린다.
     
    두 값이 모두 true인 경우에만 액세스가 허용됩니다.
    let enteredDoorCode = true 
    let passedRetinaScan = false 
    if enteredDoorCode && passedRetinaScan { 
        println("Welcome!") 
    } else { 
        println("ACCESS DENIED") 
    } 
    //   "ACCESS DENIED

    논리 또는


    논리 또는 a | | b는 두 개의 연속된 |로 구성된 중치 연산자입니다.그것은 두 개의 논리 표현식 중 하나가true이고 전체 표현식은true임을 나타낸다.
     
    논리와 연산이 유사하고 논리 또는'단거리 계산'이기도 하다. 왼쪽의 표현식이true일 때 오른쪽의 표현식을 계산하지 않는다. 왜냐하면 전체 표현식의 값을 바꿀 수 없기 때문이다.
    let hasDoorKey = false 
    let knowsOverridePassword = true 
    if hasDoorKey || knowsOverridePassword { 
        println("Welcome!") 
    } else { 
        println("ACCESS DENIED") 
    } 
    //   "Welcome!" 

     

    조합 논리


    우리는 여러 개의 논리 연산을 조합하여 하나의 복합 논리를 표현할 수 있다.
    if enteredDoorCode && passedRetinaScan || hasDoorKey || knowsOverridePassword { 
        println("Welcome!") 
    } else { 
        println("ACCESS DENIED") 
    } 
    //   "Welcome!"

     

    괄호를 사용하여 우선 순위 지정


    복잡한 표현식이 쉽게 읽을 수 있도록 적당한 곳에 괄호를 사용해서 우선순위를 명확히 하는 것은 효과적이다. 비록 필요하지는 않지만.지난번 문에 대한 권한의 예에서, 우리는 첫 번째 부분에 괄호를 붙여서, 그것을 사용하면 논리가 더욱 명확해 보인다.
    if (enteredDoorCode && passedRetinaScan) || hasDoorKey || knowsOverridePassword { 
        println("Welcome!") 
    } else { 
        println("ACCESS DENIED") 
    } 
    // prints "Welcome!"

    이 괄호는 앞의 두 값을 전체 논리적 표현의 독립된 부분으로 간주한다.괄호가 있는 것과 괄호가 없는 출력 결과는 같지만 코드를 읽는 사람에게는 괄호가 있는 코드가 더 뚜렷하다.간결성보다 읽기 용이성
     
    원문: http://www.cocoachina.com/ios/20140611/8767.html
     
    2015-03-18
     21:46:23

    좋은 웹페이지 즐겨찾기