스위프트 구조체

성난호랑이 시니철 ㅣ 2016. 1. 2. 13:33

//: Playground - noun: a place where people can play


import UIKit


var str = "Hello, playground"



// 구조체 정의하기


                            // 구조체의 값을 가공한 형태로 리턴받고자 하는 경우 함수 형태의{} 포함할수 있다

                            // 읽기 전용 변수로 사용됨


struct Member {

    var year: Int;

    // getter --> 어떤 값을 넘겨줄지를 코드로써 구현(읽기전용)

    var age: Int{

        return 2016 - self.year + 1;

    }


}


// 기본값이 정의되지 않은 구조체는 변수 생성시에 값을 설정해야 한다.

var member = Member(year:2015);

print(member.age);






---------------------------------*********-------------------------------



//: Playground - noun: a place where people can play


import UIKit


var str = "Hello, playground"



// 구조체 정의하기

struct People{

    var name : String;

    var year : Int;

    var month : Int;

    var day : Int;

    var gender : String;

    var birthdate : String {

        return "\(String(format: "%04d", self.year))-\(String(format: "%02d", self.month))-\(String(format: "%02d", self.day))"

    }

    

    init(){

        self.name = "이름없음"

        self.year = 2016

        self.month = 1

        self.day = 1

        self.gender = "남자"

        // 생성자 구조체에 대한 변수가 생성될 , 자동 실행됨.

        // 변수값을 초기화하는 용도.

    }


    //  %d 정수

    //  %s 문자열

    //  %4d 4자리 숫자 1이라고 출력할 경우 "    1"

    

    init(name: String, year: Int, month: Int, day: Int, gender: String){

        self.name = name;

        self.year = year;

        self.month = month;

        self.day = day;

        self.gender = gender;

    }

    

    func printInfo() -> Void{

        print("이름 \(self.name)");

        print("생년월일 \(self.birthdate)");

        print("성별 \(self.gender)");

    }

    

    // 구조체 내의 함수가 멤버변수를 변경하기 위해서는 mutating 옵션 필요함.

    mutating func next() -> Void{

        self.year += 1

    }

    

}


var p1 : People = People();

p1.printInfo();


print("----------------")


var p2 : People = People(name: "swift학생", year: 1990, month: 5, day: 5, gender: "여자")

p2.printInfo()


print("----------------")


p2.next()

p2.printInfo()



// 구조체 (글래스)에 포함된 변수

// 프로퍼티(=멤버변수)


1) 읽기 쓰기 겸용

--> 일반 변수

ex) var num : Int = 100;


2) 읽기 전용 ( getter만 포함 형태)

--> 가공된 값을 리천하는 형태

ex) var num : Int{

return 100 +1

}


3) getter, setter를 포함한 형태

--> 가공된 값을 다른 프로퍼티에 저장

--> 가공된 값을 리턴

ex) var num : Int{

get {return 100 + 1}

set(변수이름) {self.프로퍼티 = 변수 + 1}

}





//: Playground - noun: a place where people can play


import UIKit


var str = "Hello, playground"



struct Member {

    var name : String = ""

    var year : Int = 0

    var age : Int {

        get { return 2016 - self.year + 1 }

        set { self.year = 2016 - newValue - 1 }

    }

    func say() -> Void {

        print("\(self.name)님은 \(self.age) 입니다.")

    }

}


var member = Member()

member.name = "학생"

member.year = 1990

member.age = 19

member.say()







'메모장' 카테고리의 다른 글

svn  (1) 2018.08.22
엘라스틱에 데이터 넣기  (0) 2017.12.28
asd  (0) 2016.01.02
스위프트 클레스  (0) 2016.01.02
.clone()  (0) 2015.12.30