Swiftの書き方
よく使う文法・タグ・操作を、短い例で。42項目から探せます。
42 / 42項目
基本の形や関数内の抜粋を掲載しています。そのまま実行する例と準備方法は、各言語の「学ぶ」ページで確認できます。
変数と表示
letは定数、varは変更できる変数です。
let name = "海"
print(name)条件分岐
条件に応じて処理を変えます。
let age = 20
if age >= 18 {
print("成人")
} else {
print("未成年")
}繰り返し
範囲の値を順に取り出します。
for number in 1...3 {
print(number)
}関数
funcで処理をまとめます。
func add(_ a: Int, _ b: Int) -> Int { return a + b }配列
複数の値を順番にまとめます。
let names = ["海", "空"]
print(names[0])構造体
関連する値をまとめます。
struct User {
let name: String
}
let user = User(name: "海")
print(user.name)
オプショナル
値がないかもしれない型を扱います。
let name: String? = nil
print(name ?? "名無し")型の指定・型変換
型を明示し、数値の種類を変える。
let age: Int = 20
let value = Double(age)文字列の埋め込み
文章に変数を入れる。
let name = "海"
print("こんにちは、\(name)さん")文字列の操作
文字数、部分一致、大文字への変換。
let text = "hello"
print(text.count)
print(text.contains("he"))
print(text.uppercased())配列の追加・件数
可変の配列に値を足す。
var names = ["海", "空"]
names.append("陸")
print(names.count)辞書
キーと値の組を扱う。
let ages = ["海": 20]
print(ages["海"] ?? 0)switch
値で処理を分ける。
let day = 1
switch day {
case 1: print("月曜")
default: print("その他")
}while・break
条件が成立している間繰り返す。
var i = 0
while i < 3 {
i += 1
if i == 2 { break }
}半開区間
終点を含めない範囲。
for n in 0..<3 { print(n) }クロージャー
処理を値として扱う。
let twice = { (n: Int) -> Int in n * 2 }
print(twice(3))map・filter
値を変換し、条件で絞る。
let nums = [1, 2, 3]
let doubled = nums.map { $0 * 2 }
let large = nums.filter { $0 > 1 }if let
オプショナルに値がある場合だけ使う。
let name: String? = "海"
if let value = name { print(value) }guard let
値がなければ早めに終了する。
func greet(_ name: String?) {
guard let value = name else { return }
print(value)
}enum
決まった候補を型で表す。
enum Status { case draft, published }
let status = Status.draftclass・protocol
オブジェクトと必要な操作。
protocol Greeter { func greet() -> String }
class User: Greeter {
func greet() -> String { "こんにちは" }
}do・try・catch
失敗する可能性のある処理を呼ぶ。
enum Failure: Error { case invalid }
func check() throws { throw Failure.invalid }
do { try check() } catch { print(error) }1行を入力する
readLineは入力がなければnilを返します。
let name = readLine() ?? "ゲスト"
print(name)コンソール向けの例です。
文字を数値にする
Intは変換できないとnilを返します。
let count = Int("12") ?? 0数値の型を変える
型の名前を使って数値を変換します。
let count = 12
let price = Double(count)
let whole = Int(3.8)Intは小数部分を切り捨てます。
短い条件分岐
条件に応じて使う値を選びます。
let age = 20
let label = age >= 18 ? "成人" : "未成年"nilのときの初期値
??で値がないときの代わりを指定します。
let name: String? = nil
let display = name ?? "ゲスト"値があるときだけ操作
?.でOptionalの値があるときだけ操作します。
let name: String? = "海"
let count = name?.count ?? 0区切って配列にする
splitで区切り文字ごとに分けます。
let colors = "赤,青,白".split(separator: ",")
print(colors[0])要素はSubstringです。必要に応じてString(colors[0])にします。
空白除去と置き換え
Foundationのメソッドで文字列を整えます。
import Foundation
let text = " hello ".trimmingCharacters(in: .whitespacesAndNewlines)
let message = text.replacingOccurrences(of: "hello", with: "こんにちは")文字が含まれるか確認
containsやhasSuffixで文字列を調べます。
let file = "memo.txt"
let isText = file.hasSuffix(".txt")
let hasMemo = file.contains("memo")文字ごとに読む
for inでStringの文字を順番に取り出します。
for letter in "こんにちは" {
print(letter)
}配列の変更・削除
varの配列は要素の変更や削除ができます。
var names = ["海", "空"]
names[0] = "山"
names.remove(at: 1)最初と最後の要素
firstとlastは空の配列ならnilを返します。
let scores = [80, 90]
let first = scores.first ?? 0
let last = scores.last ?? 0並べ替えた配列を作る
sortedは元の配列を変えずに小さい順に並べます。
let scores = [90, 70, 80]
let ordered = scores.sorted()条件に合う値を探す
first(where:)は最初に見つかった値を返します。
let scores = [60, 90, 80]
let first = scores.first(where: { $0 >= 80 })重複しない集合
Setには同じ値が1回だけ入ります。
var colors: Set<String> = ["赤", "赤", "青"]
colors.insert("白")
print(colors.count)辞書の初期値
defaultでキーがないときの値を決めます。
var counts: [String: Int] = [:]
counts["りんご", default: 0] += 1値をまとめて受け取る
タプルで関連する値を1つにまとめます。
let point = (x: 10, y: 20)
print(point.x)
let (x, y) = point引数の初期値
引数を省略すると初期値が使われます。
func greet(name: String = "ゲスト") {
print("こんにちは、\(name)")
}
greet()計算して値を返す
プロパティを読むとその場で計算します。
struct Square {
var side: Int
var area: Int { side * side }
}ファイルを読む・書く
Foundationでテキストをファイルに保存します。
import Foundation
let file = URL(fileURLWithPath: "memo.txt")
do {
try "こんにちは".write(to: file, atomically: true, encoding: .utf8)
let text = try String(contentsOf: file, encoding: .utf8)
print(text)
} catch { print(error) }コンソール向けの例です。既存の内容を上書きします。iOSアプリでは保存可能なフォルダーのURLを使います。