μλ νμΈμ Foma π μ λλ€!
νμ ν¨μλ₯Ό μμ±νλ©΄μ "νλΌλ―Έν°λ λͺ κ°κ° μ λΉν κΉ?", "μ΄λμ λ λ¨μλ‘ μ¨μΌν κΉ?" λ±
ν¨μλ₯Ό μ μ νκΈ° μ°κΈ° μν΄μ κ³ λ―Όνμλλ°μ.
"ν΄λ¦° μ½λ" μ± μ ν΅ν΄μ κΉλν ν¨μλ₯Ό μμ±νλ λ²μ λν΄ μκ² λμ΄ μ 리ν΄λ³΄λ €κ³ ν©λλ€.
1. λ μκ²
κΉλν ν¨μλ₯Ό μμ±νκΈ° μν΄μ μ΄ μ± μ μ μμΈ λ§ν΄μ μ΅λν μκ² λ μκ² μ°λΌκ³ κ°μ‘°ν©λλ€.
(μ€μ λ‘ μ΅μ€νΈλ¦Ό νλ‘κ·Έλλ° κ°λ°μμΈ "μΌνΈ λ°±"μ΄ μμ±ν ν¨μλ 2μ€μμ 4μ€λ‘λ°μ μ΄λ£¨μ΄μ Έ μμ§ μλ€κ³ νλ€μ)
"κ·Έλ λ€λ©΄ μκ² μ°λ κ²μ κΈ°μ€μ μ΄λ μ λμΌκΉμ?"
ν¨μ μμμ if/else/whileλ¬Έμ μ°μ΄λ λΈλ‘μ ν μ€μ΄ μ λΉνκ³ λ€μ¬μ°κΈ°λ 1λ¨μμ 2λ¨μ λμ΄μλ©΄ μλλ€κ³ ν©λλ€.
μ΄λ κ² μκ² ν¨μλ₯Ό μμ±ν΄μΌ λ μ΄ν΄νκΈ° μ½κ³ μ½κΈ° μ¬μ΄ μ½λλ₯Ό μμ±ν μ μμ΅λλ€.
2. νκ°μ§λ§ ν΄λΌ
ν¨μλ₯Ό μκ² μ°κΈ° μν΄μ μ΄λ»κ² ν΄μΌ ν κΉμ?
μ μ μΌμ ν΄μΌ ν κ²μ λλ€.
μ¦, ν¨μ λ΄μμ μ¬λ¬κ°μ§ μΌμ μ²λ¦¬νλ κ²μ΄ μλ ν κ°μ ν¨μμμ ν κ°μ§ μΌλ§ νλλ‘ νλ κ² μ λλ€.
μλ₯Ό λ€λ©΄ μλμ κ°μ΄ κ³μ°μ ν΄μ£Όλ μ°μ°μμ λ°λΌμ ν¨μκ° μλ€κ³ κ°μ νκ² μ΅λλ€.
λμ μ β
func calculate(n1:Int,n2:Int,op:String) -> Int {
if op == "*" {
return n1*n2
}else if op == "+" {
return n1+n2
}else if op == "-" {
return n1-n2
}else {
return n1/n2
}
}
ν κ°μ§ μΌλ§ νλλ‘ ν¨μλ₯Ό μ§κ² νλ©΄ μ΄λ»κ² λ κΉμ?
μ’μ μ ππ»
func add(n1:Int,n2:Int) -> Int {
n1+n2
}
func minus(n1:Int,n2:Int) -> Int {
n1-n2
}
func multiply(n1:Int,n2:Int) -> Int {
return n1*n2
}
func divide(n1:Int,n2:Int) -> Int {
return n1/n2
}
3. μμ μ μΈ μ΄λ¦μ μ¬μ©ν΄λΌ
μ§λ "κΉ¨λν μ½λλ?" κΈμμ μν€ μ°½μμμΈ μλλ "μ§μνλ κΈ°λ₯μ΄ κ·Έλλ‘ μννλ€λ©΄ μ’μ μ½λλ€." λΌκ³ νμ΅λλ€.
μ¦, ν¨μμ μ΄λ¦μ μμΈνκ² μ§μμλ‘ ν¨μκ° μννλ κΈ°λ₯μ μ§μνκΈ° μ¬μΈ κ² μ λλ€.
μ무리 κΈΈλλΌλ μΆ©λΆν μ€λͺ μ΄ λλ μ΄λ¦μ΄ μ§§κ³ μ΄λ €μ΄ μ΄λ¦λ³΄λ€ λ«λ€κ³ λ§ν©λλ€.
λμ μ β
func isValid(email:String) -> Bool {
return email.contains("@")
}
μ’μ μ ππ»
func isEmailContainsAtsign(email:String) -> Bool {
return email.contains("@")
}
4. μ΄μμ μΈ μΈμ
ν¨μμμ μ΄μμ μΈ μΈμμ κ°μλ νλλ μλ κ²μ΄ κ°μ₯ μ’κ³ λΆκ°νΌ ν κ²½μ° μ΄νμμ μΌνκΉμ§ μ¬μ©νμ§λ§
κ·Έ μ΄μ μ¦, 4κ°λ νΉλ³ν μ΄μ κ° μλλΌλ μ¬μ©νλ©΄ μλλ€κ³ λ§ν©λλ€.
κ·Έλ λ€λ©΄ μ΄λ»κ² μΈμλ₯Ό μ€μΌ μ μμκΉμ?
λ°λ‘ κ°μ²΄λ₯Ό μ¬μ©νλ κ²κ³Ό ν κ°μ§ μΌλ§ νλλ‘ νλ κ²μ λλ€.
μλμ κ°μ΄ νλ€μμ λ§λ€μ΄ μ£Όλ ν¨μκ° μμ΅λλ€.
νμ§λ§ μμ΄λ‘ λ μ΄λ¦μ μ±μ΄ λ€λ‘ κ°κ² ν΄μΌνκ³ νκΈλ‘ λ μ΄λ¦μ μ±μ΄ μμΌλ‘ κ°κ² ν΄μΌν©λλ€.
λμ μ β
func makeFullName(firstName:String,lastName:String,isEnglish:Bool) -> String{
if isEnglish {
return lastName + firstName
}else {
return firstName + lastName
}
}
μ’μ μ ππ»
μλμ κ°μ΄ Nameμ΄λ κ°μ²΄λ₯Ό λ§λ€κ³ μμ΄λ‘ λ μ΄λ¦κ³Ό νκΈλ‘ λ μ΄λ¦ νλ€μμ λ§λλ ν¨μλ₯Ό λΆλ¦¬νλ©΄
3νμμ λ¨ν ν¨μλ‘ μΈμλ₯Ό μ€μΌ μ μμ΅λλ€.
struct Name {
let first:String
let last:String
}
func makeKoreanFullName(name:Name) -> String{
return name.first + name.last
}
func makeEnglishFullName(name:Name) -> String{
return name.last + name.first
}
5. μ€λ₯ μ²λ¦¬
λ³΄ν΅ μ€λ₯λ₯Ό μ²λ¦¬ν λ ν¨μ λ΄μμ μΌμ΄λλ μ€λ₯λΌλ©΄ λ°λ‘ μ²λ¦¬νλ κ²½μ°κ° λ§μμ΅λλ€.
κ·Έλ¬λ€λ³΄λ©΄ μ€λ₯λ₯Ό μ²λ¦¬νλ μ½λ try catch ꡬ문 λ±μΌλ‘ ν¨μκ° κΈΈμ΄μ§κ² λ©λλ€.
λν μ€λ₯λ νκ°μ§ μμ μ€μ νλμ΄κΈ° λλ¬Έμ λ°λ‘ λΆλ¦¬νλ κ²μ΄ μ’λ€κ³ λ§ν©λλ€.
λμ μ β
enum UserError:Error{
case emptyString
case containSpecialSymbol
case containNumber
case negativeNumber
}
struct User {
let name:String
let age:Int
}
func signUp(user:User) throws -> User{
let user = User(name: "Fomagran", age: 26)
if user.name.isEmpty {
throw UserError.emptyString
}
if user.name.contains("@") {
throw UserError.containSpecialSymbol
}
if user.name.filter({$0.isNumber}).count > 0 {
throw UserError.containNumber
}
if user.age < 0 {
throw UserError.negativeNumber
}
return user
}
μ’μ μ ππ»
μ€λ₯λ₯Ό κ²μ¬νλ ν¨μμ μ€λ₯λ₯Ό 체ν¬νλ ν¨μλ₯Ό λ°λ‘ λ§λ€μ΄μ signUp ν¨μλ κ°κ²°νκ² μμ±νλλ‘ ν©λλ€.
func isValidUserInfo(user:User) throws -> User {
if user.name.isEmpty {
throw UserError.emptyString
}
if user.name.contains("@") {
throw UserError.containSpecialSymbol
}
if user.name.filter({$0.isNumber}).count > 0 {
throw UserError.containNumber
}
if user.age < 0 {
throw UserError.negativeNumber
}
return user
}
func checkUserError(user:User) -> User?{
do {
return try isValidUserInfo(user: user)
}
catch {
print(error)
return nil
}
}
func signUp(user:User) -> User? {
let validUser = checkUserError(user: user)
return validUser
}
λκΈ