728x90
반응형
import Cocoa
// ----------------------------------- //
// 내 PC의 OS 크기 확인
// ----------------------------------- //
print("Int :" + String(Int.min) + " ~ " + String(Int.max)) // 디폴트 값Int :-9223372036854775808 ~ 9223372036854775807
print("Int :" + String(Int8.min) + " ~ " + String(Int8.max)) // 8비트 Int :-128 ~ 127
print("Int :" + String(Int16.min) + " ~ " + String(Int16.max)) // 16비트 Int :-32768 ~ 32767
print("Int :" + String(Int32.min) + " ~ " + String(Int32.max)) // 32비트 Int :-2147483648 ~ 2147483647
print("Int :" + String(Int64.min) + " ~ " + String(Int64.max)) // 64비트 Int :-9223372036854775808 ~ 9223372036854775807
// ----------------------------------- //
// 기본 데이터 타입
// ----------------------------------- //
/*
Swift의 기본 데이터 타입
Bool, Int, UInt(지구 인구 가능), Float, Double, Character, String // 전부 첫 글자가 대문자로 쓴다.
*/
// Bool
var someBool : Bool = true
someBool = false
// someBool = 0 (swift는 0,1이 true, false 가 아니라 그냥 true, false이다.
// Int
var someInt : Int = -100
someInt = Int(100.1)
someInt = 100_000 //== 100,000 구분해서 쓸 수 있다.
someInt = 100_00_00
print(someInt)
// UInt
var someUInt : UInt = 100
// someUInt = -100
// someUInt = someInt
// Float
var someFloat : Float = 3.14
someFloat = 3
someFloat = 10_000.44_556
//Double
var someDouble: Double = 3.14
someDouble = 3
someDouble = 10_000.44_557
someDouble = Double(someFloat)
print("Printing\(type(of: someDouble)) : \(someDouble)") // 타입을 확인해야 한다.
// 숫자 Type 변환
let doubleNum = 4.999999
var castToInt = Int (doubleNum) // 소수점을 다 없앤다.
var roundtoInt = Int(doubleNum.rounded()) //반올림해서 값을 더한다.
print("Origin:" , doubleNum, "After Cast:", castToInt, "After Rounded:", roundtoInt)
//Character는 한 글자만 가능하다.
var someCharacter : Character = "🦑" // swfit는 유니코드를 100% 변환한다.
print(someCharacter)
someCharacter = "가"
someCharacter = "A"
//someCharacter = "하하하하"
// String
var someString: String = "하하하하하🐙"
someString += "웃으면 복이와요"
print(someString)
//someString = someCharacter
someString = """
여러줄 문자열을
사용할 수 있습니다.
첫 줄과 끝 줄에서 줄바꿈을 하지 않으면
에러가 발생합니다.
"""
// 밑에는 글씨가 사이에 있어야 한다.
//someString = """aaa"""
print(someString)
//문자열과 특수문자
// \t, \n, \r, \", \'
print("aa\tbb\tcc")
let wiseWords = "\"Imagination is more important than knowledge\" - Einstein"
print(wiseWords)
// 유니코드
// 전 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 국제 표준어
let dollaSign = "\u{24}"
print (dollaSign)
let blackHeart = "\u{2665}"
print(blackHeart)
let jang = "\u{C7A5}\u{D0DC}\u{C601}"
print(jang)
//빈 문자열 초기화
var emtypString = ""
var anotherEmptyString = String()
// 빈 문자열 확인
//. 밑은매소드
//스위프트는 \() 괄호 안에는 함수
if emtypString.isEmpty{
print("Nothing to see here")
}
// 문자열 수정
var variableString = "Horse"
variableString += "and carriage"
print(variableString)
// 문자열의 개별 문자를 출력
for character in variableString{
print(character)
}
// 문자 상수 선언
let exclamationMark: Character = "!"
// 문자 배열을 이용한 문자열 출력
let catCharacters : [Character] = ["C","a","t","!","🐙"]
let catString = String(catCharacters)
let catString1 : String = String(catCharacters)
print(catString,catString1)
// 문자열과 문자의 결합
let string1 = "hello"
let string2 = "there"
var welcome = string1 + string2
print(welcome)
// 붙이는 방법
print (welcome + "!")
let excalamationMark1 : Character = "!"
welcome.append(excalamationMark1)
print(welcome)
// -------
let multiplier = 3
print("\(multiplier) times 2.5 is \(Double(multiplier)*2.5)")
// 3 times 2.5 is 7.5
// 문자 길이
let str = "12345,6789"
print("str has \(str.count) characters.") //스위프트로 빅데이터 사용가능
//문자열 인덱스
let greeting = "Guten Tag!"
greeting[greeting.startIndex]
greeting[greeting.index(before: greeting.endIndex)]
greeting[greeting.index(after: greeting.startIndex)]
let index = greeting.index(greeting.startIndex, offsetBy: 7) // 이부분에서 스위프트를 처음써본 개발자들이 많은 에러가 생긴다. 유의해서 사용하자
greeting[index]
//문자열의 개별 문자 접근
for index in greeting{
print(index)
}
//indices가 0번 부터 몇번까지 번호가 있다고 알려준다.
for index in greeting.indices{
print("\(greeting[index])", terminator:",") //terminator 사용법 알아두기
}
// 문자의 삽입과 삭제
var welcome1 = "hello"
welcome1.insert("!", at: welcome1.endIndex)
print(welcome1)
// a.문자 삽입
welcome1.insert(contentsOf: " there", at: welcome1.index(before: welcome1.endIndex))
print(welcome1)
// b.문자 삭제
welcome1.remove(at: welcome1.index(before: welcome1.endIndex))
print(welcome1)
// 시작 : 스위프트로 스크랩파이가 가능하다.
// 파이썬에서 비슷한거는 [1:6]
let range = welcome1.index(welcome1.endIndex,offsetBy: -6)..<welcome1.endIndex // 범위 : 어디부터 어디까지..<welcome1.endIndex는 범위를 잡아주는거 많이쓴다. 알아두기
welcome1.removeSubrange(range)
print(welcome1)
// 부분 문자열 for 문 및 if문을 거의 사용하지 않고 돌리는 방법! 스위프트!
let greeting1 = "Hello, World"
let index1 = greeting1.firstIndex(of: ",") ?? greeting1.endIndex
let beginning = greeting1[..<index1]
print(beginning)
//print(type, of:)
//접두사와 접미사
let romeoAndJuliet = [
"Act 1 Scene 1 : Verona, A public place",
"Act 1 Scene 2 : Capulet's mansion",
"Act 1 Scene 3 : A room is Capulet's mansion",
"Act 1 Scene 4 : A street outise Capluet's mansion",
"Act 1 Scene 5 : the Greet Hall in Capluet's mansion",
"Act 2 Scene 1 : Outside Capulet's mansion",
"Act 2 Scene 2 : Capulet's orchard",
"Act 2 Scene 3 : Outside Friar Lawrenece's cell",
"Act 2 Scene 4 : A street in Verona",
"Act 2 Scene 5 : Capulet's mansion",
"Act 2 Scene 6 : Friar Lawrenece's cell"
]
var act1SceneCount = 0
for scene in romeoAndJuliet{
if scene.hasPrefix("Act 1 "){ //prefix 는 True/ False값이다. "Act 1" 있는게 있나?
act1SceneCount += 1
}
}
print("There are \(act1SceneCount) scene in Act 1.")
// 문자열중 끝 부분이 Capulet's mansion의 갯수와 Friar Lawrence's cell의 갯수 출력
// 6 mansion scenes; 2 cell scenes
//var act1SceneCount = 0
//var act1SceneCount1 = 0
//
//for scene in romeoAndJuliet{
// if scene.hasSuffix("") {
// }
//}
// Any, AnyObject, nil
/*
Any : Swift의 모든 타입을 지칭하는 키워드
nil : null
*/
// Any (숫자 , 문자 ) 둘다 가능
// 단점 : 메모리를 많이 사용한다.
var someAny: Any = 100
someAny = "어떤 타입도 수용 가능합니다."
print(someAny)
someAny = 123.12
print(someAny)
// ! : null 에 값을 준다.(?)
// optional :
let someAny1: Double = someAny as! Double
print(someAny1)
// nil
/*
- nil은 없음을 의미하는 키워드.
- 다른 언어의 NULL, Null, null, NaN, NA 등과 유사한 표현 입니다.
*/
//someAny1 = nil
// Tuple
// Tuple 사용전
var dialCode = 82
var isoCode = "KR"
var name = "Korea"
print(dialCode, isoCode, name)
// Tuple의 사용
// 스마트폰은 메모리를 신경써야한다!
// Xcode는 시뮬은 되지만 실제폰은 안될 수도 있다!
// 반드시 테스트해야 한다.
var country = (82, "KR", "Korea")
print(country.0,country.1,country.2)
var country1 = (dialCode1: 82, isoCode1:"KR", name1:"Korea")
print(country1.dialCode1)
/*
person <- (John Doe, 201 Main Street, 35)
John Doe lives at 201 Main Street and is 35 years old.
*/
var person = (name:"John Doe",address:"201 Main Street",age:"35")
print(person.name,"live at",person.address, "and is", person.age, "years old")
반응형
'개발자 코드(Code) > Swift(문법)' 카테고리의 다른 글
Swift 06.컬렉션 set집합연산 (0) | 2020.08.20 |
---|---|
Swift 05. 컬렉션 Dictionaray (0) | 2020.08.20 |
Swift 04.컬렉션 Aarry (0) | 2020.08.20 |
Swift 03.기본 연산자 (0) | 2020.08.20 |
Swift. 01_상수와 변수 (0) | 2020.08.20 |