Edited at

力試し:SwiftのOptionalでこれできますか? に挑戦

More than 3 years have passed since last update.

こちらに挑戦してみました。

Optional.mapを使いたかったのでQ3, 4あたりは簡潔かどうかは怪しいですが。。。


playground

// Playground - noun: a place where people can play

import UIKit

func Q1() {

func ans(a: Int?) -> Int? {
return a.map { $0 * $0 }
}

println(ans(2))
println(ans(nil))
}

func Q2() {

func ans(s: String?) -> Int? {
return s?.toInt()
}

println(ans("2"))
println(ans("a"))
println(ans(nil))
}

func Q3() {

func safeSqrt(x: Double) -> Double? {
return x < 0.0 ? nil : sqrt(x)
}

func ans(x: Double?) -> Double? {
return x.map(safeSqrt) ?? nil
}

println(ans(4))
println(ans(0))
println(ans(-4))
println(ans(nil))
}

func Q4() {

func ans(#a: Int?, #b: Int?) -> Int? {
return a.map { a0 in b.map { b0 in a0 + b0 } } ?? nil
}

println(ans(a: 1, b: 2))
println(ans(a: nil, b: 2))
println(ans(a: 1, b: nil))
println(ans(a: nil, b: nil))
}

func Q5() {

func ans(a: Int?) {
a.map(println)
}

ans(1)
ans(nil)
ans(2)
}

println("\nQ1")
Q1()
println("\nQ2")
Q2()
println("\nQ3")
Q3()
println("\nQ4")
Q4()
println("\nQ5")
Q5()




Q1
Optional(4)
nil

Q2
Optional(2)
nil
nil

Q3
Optional(2.0)
Optional(0.0)
nil
nil

Q4
Optional(3)
nil
nil
nil

Q5
1
2