c o d i n g . . πŸ‰/ios

[μΈν”„λŸ°] 아이폰 μ•± 개발(2)

H J 2022. 6. 20. 04:39

μ˜€λŠ˜μ€ swift의 κΈ°λ³Έ 문법뢀터 ν•¨μˆ˜κΉŒμ§€ ! 😸


πŸ‰ κΈ°λ³Έ 문법 πŸ‰

λ³€μˆ˜ μƒμˆ˜

var r = 3.123// λ³€ν•˜λŠ” κ°’
let p = 3.1415926535 // λ³€ν•˜μ§€ μ•ŠλŠ” κ°’

var message : String = "ν•˜μ΄"
// Bool, Int, String, Float, Double ...

cmd + click → λ³€μˆ˜λͺ… ν•œλ²ˆμ— λ³€κ²½ κ°€λŠ₯

λ°μ΄ν„°μ˜ μžλ£Œν˜•μ„ 보고 νƒ€μž… μΆ”λ‘  → 데이터가 μ—†μœΌλ©΄ μžλ£Œν˜• λͺ…μ‹œ ν•„μš”

ν•œλ²ˆ μžλ£Œν˜•μ΄ 정해지면 λ³€κ²½ λΆˆκ°€λŠ₯

Intν˜•μ€ ν”Œλž«νΌμ— 따라 λ²”μœ„κ°€ 달라짐

Int8, 16, 32, 64둜 λ‹€μ–‘ν•œλ° μ‚¬μš©κ°€λŠ₯ λ²”μœ„κ°€ λ„˜μ–΄κ°€κ²Œ 되면 μ˜€λ²„ν”Œλ‘œμš° λ°œμƒ

Int둜 μ„ μ–Έν•˜κ²Œ 되면 μžμ‹ μ˜ cpu에 맞게 μžλ™μ μœΌλ‘œ 섀정됨

 

ν•¨μˆ˜

// ν•¨μˆ˜ μ„ μ–Έ

func circleArea(r: Double) -> Double {
	return (r * r * 3.1415926535)
}

// ν•¨μˆ˜ μ‚¬μš©
circleArea(r: 3.123)

 

class

class Circle {
	var radius = 3.123
	let pi = 3.1415926535

	func circleArea(r: Double) -> Double {
		return (r * r * 3.1415926535)
	}
}

관련이 μžˆλŠ” 것끼리 λ¬Άκ³  ν•„μš”ν•  λ•Œλ§ˆλ‹€ μ‚¬μš©

기쑴의 class μ‚¬μš© or 직접 class λ§Œλ“€μ–΄ μ‚¬μš©

 

μ—°μ‚°μž

  • μ‚°μˆ  μ—°μ‚°μž ( +, - , *, /, %)
  • 비ꡐ μ—°μ‚°μž ( <, >, <=, >=, ==, != )
  • 논리 μ—°μ‚°μž ( &&, ||, ! )

 

쑰건문

  • ifλ¬Έ
var num = 10;

if (num < 5)
{
    print("5보닀 μž‘μŠ΅λ‹ˆλ‹€ !")
}
else if (num == 5)
{
    print("5μž…λ‹ˆλ‹€ !")
}
else
{
    print("5보닀 ν½λ‹ˆλ‹€ !")
}

 

  • switchλ¬Έ
var num = "μž₯마";

switch num
{
case "λ§‘μŒ":
    print("λ§‘μŒ")
case "흐림":
    print("흐림")
case "λΉ„", "μž₯마":
    print("λΉ„λ‚˜ μž₯마")
default:
    print("λͺ°λΌμš© ~")
}

c언어와 λ‹€λ₯Έ 점 1. breakλ¬Έ ν•„μš” μ—†μŒ 2. ν•œ caseλ‹Ή μ—¬λŸ¬ 쑰건 κ°€λŠ₯ 3. default μ—†μœΌλ©΄ 였λ₯˜ λ±‰μŒ

 

반볡문

  • forλ¬Έ
for i in 1...10
{
    print(i)
}

for i in stride(from: 1, to: 10, by: 2)
{
    print("값은: \\(i)")
}

for i in stride(from: 10, to: 1, by: -2)
{
    print("값은: " + String(i))
}

 

  • whileλ¬Έ + repeat whileλ¬Έ
var i = 0

while (i < 10)
{
    i += 1
    print(i)
}

i = 0
repeat
{
    i += 1
    print(i)
} while (i < 10)

 

λ°°μ—΄

var array = [1, 2, 3, 4]
var evenArray: Array<Int> = [2, 4, 6, 8]
var charArray: [String] = ["one", "two", "three"]

array[0] // κ°’ κ°€μ Έμ˜€κΈ° -> 1

array.append(5) // λ°°μ—΄ 맨 끝에 5 μΆ”κ°€
array.insert(-1, at: 0) // 0번째 μΈλ±μŠ€μ— -1 μΆ”κ°€
array.remove(at: 0) // 0번째 인덱슀 μ‚­μ œ

for i in array
{
    print(i)
}

λ‹€μ–‘ν•œ ν•¨μˆ˜λ₯Ό 톡해 배열에 μΆ”κ°€, μ‚­μ œκ°€ 용이

 

λ”•μ…”λ„ˆλ¦¬

var dic = [1: "one", 2: "two", 3: "three"] // ν‚€: λ°Έλ₯˜
var dic1: Dictionary<Int, String> = [1: "one", 2: "two", 3: "three"]

dic[1] // κ°’ κ°€μ Έμ˜€κΈ° -> one

dic[4] = "four" // κ°’ μΆ”κ°€

dic.removeValue(forKey: 4) // κ°’ μ‚­μ œ
dic[3] = nil // κ°’ μ‚­μ œ

dic1.removeAll() // 전체 μ‚­μ œ, μ΄ˆκΈ°ν™”

for (key, value) in dic
{
    print("key: \\(key), value: \\(value)")
} // λ°˜λ³΅λ¬Έμ—μ„œ λ”•μ…”λ„ˆλ¦¬ μ‚¬μš©

for key in dic.keys
{
    print(key)
} // λ°˜λ³΅λ¬Έμ—μ„œ λ”•μ…”λ„ˆλ¦¬μ˜ ν‚€λ§Œ

for value in dic.values
{
    print(value)
}

 


πŸ‰ ν•¨μˆ˜ πŸ‰

κΈ°λ³Έ ν˜•νƒœ

func hello(name: String) -> String {
    return ("Hello~ " + name)
}

print(hello(name: "mark"))

λ°˜ν™˜κ°’μ΄ void인 경우 μƒλž΅κ°€λŠ₯

 

λ‹€μ–‘ν•œ ν˜•νƒœ

// κΈ°λ³Έ ν˜•νƒœ
func addTwoNum(num1: Int, num2: Int) -> Int {
    return (num1 + num2)
}
addTwoNum(num1: 1, num2: 2)

// 맀개 λ³€μˆ˜μ˜ κΈ°λ³Έ 값이 μžˆλŠ” 경우
func add100(num1: Int, num2: Int = 100) -> Int {
    return (num1 + num2)
}
add100(num1: 100)
add100(num1: 100, num2: 200) // 이런 μ‹μœΌλ‘œ λ³€κ²½ κ°€λŠ₯

// κ°€λ³€ 인자λ₯Ό μ‚¬μš©ν•΄μ„œ 맀개 λ³€μˆ˜κ°€ μ—¬λŸ¬ 개인 경우
func addNums(nums: Int...) -> Int {
    var sum = 0
    for num in nums
    {
        sum += num
    }
    return (sum)
}
addNums(nums: 1, 2, 3, 4, 5)

// λ°˜ν™˜κ°’μ΄ μ—¬λŸ¬ 개인 경우
func myInfo() -> (name: String, age: Int) {
    return ("mark lee", 24)
}
myInfo().name
myInfo().age
print(myInfo())

 

Argument label

func calc(firstNum num1: Int, secondNum num2: Int) -> Int {
    return (num1 + num2)
}

calc(firstNum: 1, secondNum: 2)

// μ–Έλ”λ°”λ‘œ μƒλž΅κ°€λŠ₯
func calc2(_ num1: Int, _ num2: Int) -> Int {
    return (num1 + num2)
}

calc2(1, 2) // 맀개 λ³€μˆ˜λͺ… 없이 μ‚¬μš© κ°€λŠ₯

맀개 λ³€μˆ˜μ— λŒ€ν•œ μ„€λͺ…을 ν•΄μ€Œ

μ–Έλ”λ°”λ‘œ μƒλž΅ κ°€λŠ₯ → ν•¨μˆ˜ ν˜ΈμΆœν•  λ•Œλ„ μž…λ ₯κ°’λ§Œ 넣을 수 있음

 

inout

func addTwoNum(num1: Int, num2: inout Int) -> Int {
    num2 = 0
    return (num1 + num2)
}

var num1 = 1
var num2 = 2

addTwoNum(num1: num1, num2: &num2)

inout ν‚€μ›Œλ“œ 없이 맀개 λ³€μˆ˜μ˜ 값을 λ°”κΏ€ 수 μ—†μŒ ! → μ—λŸ¬

inout ν‚€μ›Œλ“œκ°€ μžˆλŠ” 경우 ν•¨μˆ˜ 호좜 μ‹œ μ£Όμ†Œ μ—°μ‚°μž λΆ™μ—¬μ•Ό 함

 

 

 

  • 16μ§„μˆ˜ μ‚¬μš©μ΄μœ  : λ°”μ΄νŠΈμ™€ 잘 맞음 + κ°„κ²°ν•˜κ³  짧음 + 2μ§„μˆ˜μ™€ μƒν˜Έλ³€ν™˜μ΄ 쉬움(4μžλ¦¬μ”© λŠμ–΄μ„œ)
  • μš©μ–΄ 정리
func calc(firstNum num1: Int, secondNum num2: Int) -> Int {
    return (num1 + num2)
}
// func : ν•¨μˆ˜ ν‚€μ›Œλ“œ
// calc : ν•¨μˆ˜ 이름
// num1 : νŒŒλΌλ―Έν„° λ„€μž„ == λ§€κ°œλ³€μˆ˜ 이름
// Int : νŒŒλΌλ―Έν„° νƒ€μž…, 리턴 νƒ€μž…
// firstNum : argument label == μΈμžμ— λŒ€ν•œ μ„€λͺ…

calc(firstNum: 10, secondNum: 10) // argument == 인자

끝 !!

κ·Έλž˜λ„ cλž‘ κ°œλ…μ€ 거의 λΉ„μŠ·ν•΄μ„œ 쉬웠닀! ν˜•μ‹λ§Œ 손에 읡으면 될 λ“―