Skip to content

Latest commit

ย 

History

History
338 lines (236 loc) ยท 6.21 KB

swiftBasice.md

File metadata and controls

338 lines (236 loc) ยท 6.21 KB

Swift Basics

Type

  • String (๋ฌธ์ž) = ""
  • Int (์ˆซ์ž) = 0
  • UInt (๋ถ€ํ˜ธ์—†๋Š” ์ˆซ์ž = 8
  • Bool (์ฐธ, ๊ฑฐ์ง“) = true, false
  • Float ์†Œ์ˆ˜์  = 4 (4.0๋กœ ํ‘œํ˜„)
  • Double ์†Œ์ˆ˜์ (Float๋ณด๋‹ค ๋” ๋งŽ์€ ์ˆ˜ ํ‘œํ˜„),์ •์ˆ˜๋„ ๊ฐ€๋Šฅ =3.234342
  • Characther ์ด๋ชจ์ง€, ํ•œ ๊ธ€์ž์ธ ๋ฌธ์žํ‘œํ˜„ = ":rocket"

Contents

  • Pinst() = ๋””๋ฒ„๊ทธ ์˜์—ญ์— ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜
  • ์ฃผ์„ : /* ~ */(๋ฒ”์œ„), //, ///
  • Semicolon = ๋…๋ฆฝ์ ์œผ๋กœ ์“ฐ์ง€ ์•Š์œผ๋‚˜ ํ•œ๋ผ์ธ์— ๋‹ค์ค‘๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ print(""); print(0); print(1); print(2);

Constants and Variables

  • ์ƒ์ˆ˜์™€ ๋ณ€์ˆ˜๋Š” ํ˜„์žฌ ์–ด๋–ค ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ƒํƒœ๊ฐ’, ์†์„ฑ ์ •๋ณด ๋“ฑ์„ ๋‹ด๊ณ  ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ

    • ์ƒ์ˆ˜ (Constants) : ํ•œ ๋ฒˆ ์„ค์ •๋˜๋ฉด ๊ฐ’ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€
    • ๋ณ€์ˆ˜ (Variables) : ์„ค์ •ํ•œ ๊ฐ’์„ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
let name = ""

var age = 0
 age = 20 

//๋‹ค์ค‘์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผํ•  ๊ฒฝ์šฐ 
var x = 0.0, y = 0.0, z = 0.0 

x = 20 
y = 40
x = 33 

Naming

let ฯ€ = 3.14159
let ไฝ ๅฅฝ = "ไฝ ๅฅฝไธ–็•Œ"
let ๐Ÿถ๐Ÿฎ = "dogcow"
let ํ•œ๊ธ€ = "์„ธ์ข…๋Œ€์™•"
let `let` = 1   // Swift ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํ‚ค์›Œ๋“œ์ผ ๊ฒฝ์šฐ backquote(`) ๋ฅผ ์ด์šฉํ•ด ์‚ฌ์šฉ ๊ฐ€๋Šฅ

print(ฯ€)
print(ไฝ ๅฅฝ)
print(ํ•œ๊ธ€)
print(๐Ÿถ๐Ÿฎ)
print(`let`)
  • ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ด๋ฆ„
    1. ๊ฐ™์€ ์Šค์ฝ”ํ”„ ๋ฒ”์œ„ ๋‚ด์—์„œ ์ค‘๋ณต๋˜๋Š” ์ด๋ฆ„
    2. ๊ณต๋ฐฑ๋ฌธ์ž
    3. ์ˆ˜ํ•™ ๊ธฐํ˜ธ (โˆš, โˆ‘ ๋“ฑ)
    4. ํ™”์‚ดํ‘œ (โ†’, โ† ๋“ฑ)
    5. ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ด๋ฆ„ (์‹œ์ž‘ ๋ถ€๋ถ„ ์™ธ์—๋Š” ์‚ฌ์šฉ ๊ฐ€๋Šฅ)
// e.g.
// let ํ•œ๊ธ€ = "ใ„ฑ"
// let ๊ณต ๋ฐฑ = "X"
// let โˆš = "root"
// let โ†’ = "arrow"
// let 369๊ฒŒ์ž„ = "12์ง45์ง..."

Type Annotation & Type Inference

  • Type Annotation : ๋ณ€์ˆ˜ ์„ ์–ธ์‹œ ์‚ฌ์šฉ๋  ์ž๋ฃŒ์˜ ํƒ€์ž…์„ ๋ช…ํ™•ํ•˜๊ฒŒ ์ง€์ •
let year: Int = 2019

let language: String
language = "Swift"

var red, green, blue: Double
red = 255.0
green = 150.123
blue = 75
  • Type Inference : ๋ณ€์ˆ˜ ์„ ์–ธ์‹œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ’์˜ ํƒ€์ž…์„ ํ†ตํ•ด ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ์ถ”๋ก 
let name: String = "Tory"
type(of: name)

let age: Int = 4
type(of: age)

type(of: age)์„ ํ†ตํ•ด ํƒ€์ž… ์กฐํšŒ๊ฐ€๋Šฅ.

Literals & Types

  • ๋ฆฌํ„ฐ๋Ÿด : ์†Œ์Šค์ฝ”๋“œ์—์„œ ๊ณ ์ •๋œ ๊ฐ’์œผ๋กœ ํ‘œํ˜„๋˜๋Š” ๋ฌธ์ž (๋ฐ์ดํ„ฐ) ๊ทธ ์ž์ฒด)
    (์ •์ˆ˜ / ์‹ค์ˆ˜ / ๋ฌธ์ž / ๋ฌธ์ž์—ด / ๋ถˆ๋ฆฌ์–ธ ๋ฆฌํ„ฐ๋Ÿด ๋“ฑ)

  • Numeric Literals

var signedInteger = 123
signedInteger = +123
signedInteger = -123
type(of: signedInteger)


// 10์ง„์ˆ˜
let decimalInteger = 17
// 2์ง„์ˆ˜
let binaryInteger = 0b10001
type(of: binaryInteger)

// 8์ง„์ˆ˜
let octalInteger = 0o21
// 16์ง„์ˆ˜
let hexadecimalInteger = 0x11


//1000000000์„ _๋กœ ์ž์œ ๋กญ๊ฒŒ ๊ตฌ๋ถ„์ง€์„ ์ˆ˜ ์žˆ์Œ

var bigNumber = 1_000_000_000
bigNumber = 1_0000_0000_0000
bigNumber = 000_001_000_000_000
bigNumber = 0b1000_1000_0000
bigNumber = 0xAB_00_FF_00_FF

Integer Types

  • 8-bit : Int8, UInt8
  • 16-bit : Int16, UInt16
  • 32-bit : Int32, UInt32
  • 64-bit : Int64, UInt64
  • Platform dependent : Int, UInt (64-bit on modern devices)
//64๋น„ํŠธ
var integer = 123
integer = -123
type(of: integer)

var unsignedInteger: UInt = 123
type(of: unsignedInteger)


MemoryLayout<Int8>.size
Int8.max
Int8.min

MemoryLayout<Int16>.size
Int16.max // (-2^15) ~ (2^15 -1)
Int16.min

MemoryLayout<UInt8>.size
UInt8.max // 2^8 - 1
UInt8.min  // 0

MemoryLayout<Int32>.size
Int32.max
Int32.min

MemoryLayout<Int64>.size
Int64.max
Int64.min

//var number1 = Int(Int32.max + Int32(100))

//iPhone6 = 64๋น„ํŠธ
//iPhone5 = 32๋น„ํŠธ

Question

  • Int ์— Int32.max ~ Int64.max ์‚ฌ์ด์˜ ์ˆซ์ž๋ฅผ ๋„ฃ์—ˆ์„ ๊ฒฝ์šฐ ์ƒ๊ฐํ•ด์•ผ ํ•  ๋‚ด์šฉ์€?
MemoryLayout<Int>.size
Int.max
Int.min

MemoryLayout<UInt>.size
UInt.max
UInt.min


Int32.max
Int64.max

let q1 = Int(Int32.max) + 1
//Int32.max + 1   ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ / 32๋น„ํŠธ ์ดˆ๊ณผ
 //Int64.max + 1

Overflow Operators

//์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ์—ฐ์‚ฐ์ž , ์œ„์˜ ๊ฒƒ ๋ฌด์‹œํ•˜๊ณ  ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ์Œ
// ์•„๋ž˜ ๊ฐ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋Š”?

// Overflow addition
//var add: Int8 = Int8.max + 1
var add: Int8 = Int8.max &+ 1

Int8.min

Int8.max &+ 1
Int32.max &+ 1
Int64.max &+ 1

// 01111111  Int8์˜ ๋งฅ์Šค
// +      1
//----------
// 10000000


// 01111111
// 10000000

Floating-point Literal

var floatingPoint = 1.23
floatingPoint = 1.23e4
type(of: floatingPoint)

var floatingPointValue = 1.23
type(of: floatingPointValue)

var floatValue: Float = 1.23
type(of: floatValue)

MemoryLayout<Float>.size
Float.greatestFiniteMagnitude
Float.leastNormalMagnitude

MemoryLayout<Double>.size
Double.greatestFiniteMagnitude
Double.leastNormalMagnitude
  • Double - ์ตœ์†Œ ์†Œ์ˆ˜์ ์ดํ•˜ 15์ž๋ฆฌ์ˆ˜ ์ดํ•˜์˜ ์ •๋ฐ€๋„
  • Float - ์ตœ์†Œ ์†Œ์ˆ˜์ ์ดํ•˜ 6์ž๋ฆฌ์ˆ˜ ์ดํ•˜์˜ ์ •๋ฐ€๋„
    (โ€ป๋ถ€๋™ ์†Œ์ˆ˜์ ์ด๋ฏ€๋กœ ์†Œ์ˆ˜์  ์ดํ•˜์˜ ์ •๋ฐ€๋„๋Š” ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Œ)

Boolean Literal

var isBool = true
type(of: isBool)

isBool = false
//isBool = False
//isBool = 1
//isBool = 0

String Literal

let str = "Hello, world!"
type(of: str)

let str1 = ""
type(of: str1)

var language: String = "Swift"

Character Literal

var nonCharacter = "C"
type(of: nonCharacter)

var character: Character = "C"
type(of: character)

//๋ฉ”๋ชจ๋ฆฌ - ์ฝ”๋“œ, ๊ฒŒ๋ฆฌํ„ฐ, ํž™, ์Šคํƒ(16์— ์ €์žฅ๋˜๋‚˜ ์ดˆ๊ณผํ•˜๋ฉด ์Šคํƒ)

MemoryLayout<String>.size
MemoryLayout<Character>.size


//character = "string"
//character = ' '
//character = ""
//character = " "

Typealias

  • ๋ฌธ๋งฅ์ƒ ๋” ์ ์ ˆํ•œ ์ด๋ฆ„์œผ๋กœ ๊ธฐ์กดํƒ€์ž…์˜ ์ด๋ฆ„์„ ์ฐธ์กฐํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ
typealias Name = String

let name: Name = "Tory"
let nameString: String = "Tory"

type(of: name)
type(of: nameString)

Type Conversion

let height = Int8(5)
let width = 10
//let area = height(int8) * width(int) //์„œ๋กœ ํƒ€์ž…์ด ๋‹ค๋ฅด๊ธฐ๋•Œ๋ฌธ์— ์—๋Ÿฌ๋‚จ .
//print(area)


let h = Int8(12)
let x = 10 * h // (let x = 10 * h(int8) //ํƒ€์ž…์„ ์ง€์ •ํ•˜๊ธฐ ์ด์ „์— ๊ณ„์‚ฐํ•˜๋ฉด 10d์ด ์ž์—ฐ์Šค๋ ˆ int8๋กœ ๊ณ„์‚ฐ๋˜์–ด ์—๋Ÿฌ๋ฐœ์ƒํ•˜์ง€ ์•Š์Œ
print(x)

Subscribe