目次
基本知識
大文字・小文字の区別有り
Stringはstringと記載するとエラーとなる
宣言
定数(let)
letで宣言
定数のため一度だけ値を代入可能
let str: String
変数(var)
varで宣言
変数のため何度でも値を代入可能
var str: String
宣言と同時に代入
「=」で続けて代入
var str:String = "hello world"
最初に覚える型
型の種類
- Int:数値型 (例 100)
- Double:浮動小数点 (例 1.25)
- String:文字列 (例 Hello World)
型変換の方法
数値を文字列として扱う場合はString()で囲む
var str: String
str = S tring(3)
演算
演算子
演算子 | 内容 |
+ | 加算 |
– | 減算 |
* | 乗算 |
/ | 除算 |
% | 余り |
自分自身との演算の省略形
x += y
x = x + 5
x += 5
x += 5
文字列の操作
文字列の結合
「+」で結合する
str1 + str2
ダブルクォーテーション中への埋込み
バックスラッシュ括弧の中に記入
print (こんにちは、\(name)さん")
\()の中でも演算可能
print (“りんごが\(count1 + count2)個あります”)
print (“りんごが\(count1 + count2)個あります”)
Mac:Option + ¥
Bool値の操作
演算子 | 意味 | 解説 |
&& | AND | 全てTrueの場合にTrue |
|| | OR | 一つでもTrueの場合にTrue |
! | NOT | TrueであればFalse |
print(true && false) //false print(true || false) //true print(!ture) //false
条件分岐
if
演算子 | 解説 |
== | 同じ場合にtrie |
!= | 異なる場合にtrue |
> | 右辺より大きい場合にtrue |
>= | 右辺以上の場合にtrue |
< | 右辺より小さい場合にtrue |
<= | 右辺以下の場合にtrue |
if judge {
print(root1)
}else if{
print(root2)
else{
print(root3)
}
条件 ? A : B
message = myPoint >= 60 ? “OK” : “NG”
message = myPoint >= 60 ? “OK” : “NG”
switch
switch myPoint {
case 0:
print("NG")
case 1, 2, 3:
print("so..so..")
case 4...6:
print("4~6")
case 7..<10
print("7~9")
case let n where n > 100:
print("\(n)ポイント!!!")
default:
print("NA")
}
何もしない場合はそのcase文の下に「break」を記載
ループ処理
while
while count < 5 {
print(count)
count += 1
}
絶対に一度は実行したい場合に使用する
条件文が下部にあるため、条件を満たさなくとも1回は実行されるrepeat {
print(count)
count += 1
} while count < 5
条件文が下部にあるため、条件を満たさなくとも1回は実行されるrepeat {
print(count)
count += 1
} while count < 5
for
for 変数 in 集合 {処理}
for i in 0...10 {
print(i)
}
break,continue
ループ操作の命令 | 解説 |
break | ループから出る |
continue | 次のループを開始する |
for i in 0...10 {
if i == 5 {
break
}
print("break test \(i)")
}
for i in 0...10 {
if i == 5 {
print("continue test \(i)")
}
print(i)
}
オプショナル型
let s: Optional<String> = nil
let s: String? = nil
オプショナル型はnilでないことを確認する必要がある
if s != nil {
print(s!)
}
オプショナル型から値を取り出すには変数の後ろに「!」を付ける
オプショナルバインディング
if let value = s {
print(value)
}
str ?? nilの処理
print(str ?? "これはnilです")
複数の値の整理(配列・タプル・集合・辞書)
種類 | 例 | 特徴 |
配列 | scores: [Int] = [50, 40] | 順序有り |
タプル | 順序有り | |
集合 | 順序無し、重複禁止 | |
辞書 | キー |
配列
var points: [Int] = [100, 50]
var points = [100, 50]
print(prints[0])
points.count 要素数
points.isEmpty 空かどうか調べる
要素の追加
var fruits = [String]()
fruits.append("apple")
fruits += ["banana"]
for str in fruits {
print(str)
}
タプル
異なる型も入れられる
var items = ("apple",100)
print(items.0)
print(items.1)
let (product, amount) = items
print(product)
print(amount)
値の破棄
let (product, _) = items
print(product)
初期化で名前を付けることも可能
var items = (product: "apple", amount: 5)
print(items.product)
集合
var winners: Set<Int> = [3,5,8,8]
var winners: Set = [3,5,8,8]
print(winners) //[5,3,8]
print(winners.contains(3)) //3が有るか bool
winners.insert(10) //追加
winners.remove(5) //削除
print(winners.count)
空の集合
let s = Set<Int>()
print(s.isEmpty) //true
let a: Set = [1,3,5,8]
let b: Set = [3,5,8,9]
print(a.union(b)) //和集合 a + b
print(a.intersection(b)) //積集合 aとbの共通
print(a.subtracting(b)) //差集合 a - b
辞書
var points: Dictionary<String, Int> = ["tanaka" : 100, "satoh" : 200]
points["satoh"] = 300
print(points["tanaka"] ?? "NA")
points["suzuki"] = 500
print(points.count)
for (key, value) in points {
print("\(key) : \(value)")
}
空の辞書の作成
let d = [String: Int]()
print(d.isEmpty)
関数
func 関数名() {処理内容}
func hello() {
print("hello")
}
func helloReturn() {
return "hello"
}
print(helloReturn())
引数
func hello(name: String) {
print("hello (name)")
}
print(name: "tanaka")
引数と実行変数を別にする場合
func hello(from name: String) {
print("hello (name)")
}
print(from: "tanaka")
引数に変数名を付けない場合
func hello(_ name: String) {
print("hello (name)")
}
print("tanaka")
初期値を持たせる場合
func hello(_ name: String = "satoh") {
print("hello (name)")
}
print()
引数は定数となる(下記はエラー)
func add100(x: Int) {
x += 100
print(x)
}
引数に代入したい場合はinout
実行の変数前には「&」を付ける
また、実行の変数は引数の値を受け取る
func add100(x: inout Int) {
x += 100
}
var i = 100
add100(x: &i)
print(i)
クラス
最初の一文字は大文字
クラス内の変数や定数はプロパティーと呼ぶ
初期値はinit()を使用する
class User {
let name: String
var point: Int
init() {
self.name = "tanaka"
self.point = 100
}
}
let user1: User = User()
//let user1 = User() 型推論でも可能
print(user1.name)
user1.point = 200
イニシャライザ
class User {
let name: String
var point: Int
init(name: String, point: Int) {
self.name = name
self.point = point
}
}
let suzuki = User(name: "suzuki", point: 300)
引数の省略
class User {
let name: String
var point: Int
init(_ name: String, _ point: Int) {
self.name = name
self.point = point
}
}
let suzuki = User("suzuki", 300)
initは引数が異なればいつくでも指定可能複数のinit
class User {
let name: String
var point: Int
init(_ name: String, _ point: Int) {
self.name = name
self.point = point
}
init() {
self.name = "nanasi"
self.point = 0
}
}
let nanasi = User()
print(nanasi.name)
print(nanasi.point)
計算プロパティ
プロパティに動的に値を取得
class User {
let name: String
var point: Int
var level: Int {
get {
return Int(point / 10)
}
set{
if newValue >= 0 {
point = newValue * 10
}
}
}
init(_ name: String, _ point: Int) {
self.name = name
self.point = point
}
let satoh = User("satoh", 50)
print(satoh.level)
satoh.level = 5
print(satoh.point)
satoh.level = -10
print(satoh.point)
随時追記