14言語・590の書き方
CODE ATLAS / 文法辞典

Swiftの書き方

よく使う文法・タグ・操作を、短い例で。42項目から探せます。

42 / 42項目

基本の形や関数内の抜粋を掲載しています。そのまま実行する例と準備方法は、各言語の「学ぶ」ページで確認できます。

変数と表示

letは定数、varは変更できる変数です。

main.swift
let name = "海"
print(name)
説明と練習この項目

条件分岐

条件に応じて処理を変えます。

main.swift
let age = 20
if age >= 18 {
    print("成人")
} else {
    print("未成年")
}
説明と練習この項目

繰り返し

範囲の値を順に取り出します。

main.swift
for number in 1...3 {
    print(number)
}
説明と練習この項目

関数

funcで処理をまとめます。

main.swift
func add(_ a: Int, _ b: Int) -> Int { return a + b }
説明と練習この項目

配列

複数の値を順番にまとめます。

main.swift
let names = ["海", "空"]
print(names[0])
説明と練習この項目

構造体

関連する値をまとめます。

main.swift
struct User {
    let name: String
}
let user = User(name: "海")
print(user.name)
説明と練習この項目

オプショナル

値がないかもしれない型を扱います。

main.swift
let name: String? = nil
print(name ?? "名無し")
説明と練習この項目

型の指定・型変換

型を明示し、数値の種類を変える。

main.swift
let age: Int = 20
let value = Double(age)
この項目

文字列の埋め込み

文章に変数を入れる。

main.swift
let name = "海"
print("こんにちは、\(name)さん")
この項目

文字列の操作

文字数、部分一致、大文字への変換。

main.swift
let text = "hello"
print(text.count)
print(text.contains("he"))
print(text.uppercased())
この項目

配列の追加・件数

可変の配列に値を足す。

main.swift
var names = ["海", "空"]
names.append("陸")
print(names.count)
この項目

辞書

キーと値の組を扱う。

main.swift
let ages = ["海": 20]
print(ages["海"] ?? 0)
この項目

switch

値で処理を分ける。

main.swift
let day = 1
switch day {
case 1: print("月曜")
default: print("その他")
}
この項目

while・break

条件が成立している間繰り返す。

main.swift
var i = 0
while i < 3 {
  i += 1
  if i == 2 { break }
}
この項目

半開区間

終点を含めない範囲。

main.swift
for n in 0..<3 { print(n) }
この項目

クロージャー

処理を値として扱う。

main.swift
let twice = { (n: Int) -> Int in n * 2 }
print(twice(3))
この項目

map・filter

値を変換し、条件で絞る。

main.swift
let nums = [1, 2, 3]
let doubled = nums.map { $0 * 2 }
let large = nums.filter { $0 > 1 }
この項目

if let

オプショナルに値がある場合だけ使う。

main.swift
let name: String? = "海"
if let value = name { print(value) }
この項目

guard let

値がなければ早めに終了する。

main.swift
func greet(_ name: String?) {
  guard let value = name else { return }
  print(value)
}
この項目

enum

決まった候補を型で表す。

main.swift
enum Status { case draft, published }
let status = Status.draft
この項目

class・protocol

オブジェクトと必要な操作。

main.swift
protocol Greeter { func greet() -> String }
class User: Greeter {
  func greet() -> String { "こんにちは" }
}
この項目

do・try・catch

失敗する可能性のある処理を呼ぶ。

main.swift
enum Failure: Error { case invalid }
func check() throws { throw Failure.invalid }
do { try check() } catch { print(error) }
この項目

1行を入力する

readLineは入力がなければnilを返します。

main.swift
let name = readLine() ?? "ゲスト"
print(name)

コンソール向けの例です。

この項目

文字を数値にする

Intは変換できないとnilを返します。

main.swift
let count = Int("12") ?? 0
この項目

数値の型を変える

型の名前を使って数値を変換します。

main.swift
let count = 12
let price = Double(count)
let whole = Int(3.8)

Intは小数部分を切り捨てます。

この項目

短い条件分岐

条件に応じて使う値を選びます。

main.swift
let age = 20
let label = age >= 18 ? "成人" : "未成年"
この項目

nilのときの初期値

??で値がないときの代わりを指定します。

main.swift
let name: String? = nil
let display = name ?? "ゲスト"
この項目

値があるときだけ操作

?.でOptionalの値があるときだけ操作します。

main.swift
let name: String? = "海"
let count = name?.count ?? 0
この項目

区切って配列にする

splitで区切り文字ごとに分けます。

main.swift
let colors = "赤,青,白".split(separator: ",")
print(colors[0])

要素はSubstringです。必要に応じてString(colors[0])にします。

この項目

空白除去と置き換え

Foundationのメソッドで文字列を整えます。

main.swift
import Foundation
let text = " hello ".trimmingCharacters(in: .whitespacesAndNewlines)
let message = text.replacingOccurrences(of: "hello", with: "こんにちは")
この項目

文字が含まれるか確認

containsやhasSuffixで文字列を調べます。

main.swift
let file = "memo.txt"
let isText = file.hasSuffix(".txt")
let hasMemo = file.contains("memo")
この項目

文字ごとに読む

for inでStringの文字を順番に取り出します。

main.swift
for letter in "こんにちは" {
    print(letter)
}
この項目

配列の変更・削除

varの配列は要素の変更や削除ができます。

main.swift
var names = ["海", "空"]
names[0] = "山"
names.remove(at: 1)
この項目

最初と最後の要素

firstとlastは空の配列ならnilを返します。

main.swift
let scores = [80, 90]
let first = scores.first ?? 0
let last = scores.last ?? 0
この項目

並べ替えた配列を作る

sortedは元の配列を変えずに小さい順に並べます。

main.swift
let scores = [90, 70, 80]
let ordered = scores.sorted()
この項目

条件に合う値を探す

first(where:)は最初に見つかった値を返します。

main.swift
let scores = [60, 90, 80]
let first = scores.first(where: { $0 >= 80 })
この項目

重複しない集合

Setには同じ値が1回だけ入ります。

main.swift
var colors: Set<String> = ["赤", "赤", "青"]
colors.insert("白")
print(colors.count)
この項目

辞書の初期値

defaultでキーがないときの値を決めます。

main.swift
var counts: [String: Int] = [:]
counts["りんご", default: 0] += 1
この項目

値をまとめて受け取る

タプルで関連する値を1つにまとめます。

main.swift
let point = (x: 10, y: 20)
print(point.x)
let (x, y) = point
この項目

引数の初期値

引数を省略すると初期値が使われます。

main.swift
func greet(name: String = "ゲスト") {
    print("こんにちは、\(name)")
}
greet()
この項目

計算して値を返す

プロパティを読むとその場で計算します。

main.swift
struct Square {
    var side: Int
    var area: Int { side * side }
}
この項目

ファイルを読む・書く

Foundationでテキストをファイルに保存します。

main.swift
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を使います。

この項目