Xcode Working with Variables

장주명·2021년 5월 13일
0

variables and Constants

변수

// 선언 방법

var name = "Swift"
var nubmer = 0
var valid = true

var x = 0.0, y= 0.0, z=0.0
// 새로운 값을 저장
name = "Steve" 
print(name) // "Steve"
//다른 변수에 할당시
var anotherName = name
anotherNmae = "Daniel"
print(name, anotherName) // "Steve" "Daniel" name의 값은 변경되지 않는다.

변수와 상수변수변수를 만들때 변수를 선언한다고 말한다.

변수 선언 키워드는 var 옆에 이름으로 식별자(identify) 변수를 통해 값을 읽거나 새로운
값을 저장하는데 사용하고 다른 변수와 구분할때 쓰인다. 할당 연산자라고도 한다.

상수

// 선언 방법

var name = "Swift"
var nubmer = 0
var valid = true

var x = 0.0, y= 0.0, z=0.0

상수는 변수와 문법적으로 유사하지만 값을 변경 할수 없다.

변수와 상수 모두 타입을 선언한 후에 다른 타입으로 변경할수 없다.

ex) 
var number = 0
var number2 = 1
number = true // 에러
number = "Hello" // 에러

코드 작성시 상수를 더 많이 사용하는 이유

  1. 실수로 값은 변경시 에러가 발생하여 미연에 실수를 방지
  2. 변수보다 최적화가 빨라 더 빠르게 실행 된다.
  3. 값이 변경시 변수로 var로만 변경해주면 된다.

Naming Convention

CamelCase로 작성하는 이유 - 코드의 가독성이 들어나고 코드 작성시 실수를 줄여준다.

UpperCamelCase
항상 모든 단어의 첫번째 문자가 대문자로 작성

Class, Structure, Enumeration,Extension,Protocol

lowerCamelCase

항상 첫번째 단어는 소문자이고 나머지 첫번째 단어는 대문자로 작성

Variable, Constant, Function, Property, Parameter, Method

Scope

종류 - Global Scope, Local Scope

 Golbal Scope 는 {}밖에 있는 범위
 Local Scope는 {}안에 있는 범위 다른 Scope 범위라면 이름을 중복하여 선언할수 있다.
 

Scope 규칙

1. 동일한 범위에 있는 변수와 상수에 접근이 가능하다.
2. 동일한 범위에서는 이전에 선언되어있는 변수와 상수에 접근할수 있다.
3. Local Scope에서는 상위 Scope이나 Gobal Scope에 있는 상수와 변수에 접근할수 있다.
4. 상위 Scope에서는 하위 Scope 범위의 변수나 상수에 접근할수 없다.
5. 변수와 상수는 {} 밖으로 벗어나면 라이프 사이클이 끝난다.
6. 서로다른 범위에 동인한 이름의 변수나 상수가 있다면 가장 가까운 범위에 저장된 값을 불러온다.

같은 범위의 Scope

1. #1 , #2는 Golbal Scope 그렇기때문에 #2에 g1은 컴파일 에러 발생
2. #3 , #5는 Local Scope
3. #4는 Local Scope
4. #7은 Local Scope
5. #8은 Local Scope
 

 
#1

let g1 = 123
print(g2) // g2가 아래에 선언 되지 않았기 떄문에 에러가 발생


func doSomething() {

    #3
    print(g1) // 123
    print(g2) // Golbal Scope에 선언되어있기 때문에 접근 가능
    
    let local1 = 123
    let g1 = 1023
    
    print(g1) // 1023
    // 다른 Scope을 가지고 있기떄문에 같은 이름이여도 컴파일 에러가 발생하지 않는다.
    // 가까운 g1 값인 1023을 출력해준다.

    
   if true {
    print(local1)
	print(local2) // 선언되기 전에 접근했기 때문에 컴파일 에러
    print(g1) // 1023
    
     #4
    let local3 = 789
   
   }
    
    #5
	print(local3) //  하위 Scope에 있는 상수이기때문에 컴파일 에러 발생
    let local2 = 456
   
}


 #2
let g1 = 456
let g2 = 489
print(g1)
print(g2) 
//여기서 g2를 선언후에 위의 print(g2)는 컴파일 에러는 생기지 않지만 올바른 코드는 아니다. 항상 선언후에 사용해야 한다.

struct Scope {
  	#6
    print(g1)
    print(g2)
    //  Golbal Scope에 선언되어있지만 컴파일 에러 발생 - 문법 규칙으로 인해 Declaration Scope이기 떄문에 맴버 선언이 와야한다. Class와 Struct에서 자세하게 확인 가능
    
   func doSomething() {
       #7
    print(g1)
    print(g2)
    // 문제없이 접근 가능
   }
}
profile
flutter & ios 개발자

0개의 댓글

관련 채용 정보