//: 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()