ベルマークのない自由帳

ベルマークのない自由帳

有益と無益の境界例

Swiftのきほん -変数と定数・型・配列と辞書-

公式のSwift Development Resourcesを参考にしています。

変数と定数

varを使えば変数、letを使えば定数を定義できる。

var hogeVariable = 1
let hogeConstant = 2

型について

変数や定数に代入される値によって暗黙的(implicitly)に型が予測される。

var implicitInt = 2
    -> Intvar implicitDouble = 7.0
    -> Double

明示的(implicitly)に型を宣言する場合、「:(セミコロン)」をつかってvar 変数名: 型名とする。

var explicitFloat: Float = 4
    -> Float

変数の型を確認する方法

type(of: )を使用する。

(dynamicTypeやString(describing: )は使わない)
var hoge = "notHoge"
print(type(of: hoge))
    -> String

型変換は暗黙的に行われない

一度宣言した変数の値をあとから異なる型に変換したい場合は、明示的に変換したい型のインスタンスを作る必要がある。

var label = "Width is "
var width = 100

print(label + width)
    -> error: binary operator '+' cannot be applied to operands of type 'String' and 'Int'

print(label + String(width))
    -> "Width is 100"

文字列の中に数値型の値を入れる場合、インスタンスを生成しなくても「(バックスラッシュ)」をつかって\(変数名)とする方法もある。

var apples = 3
var pineapples = 2

var appleSum = "I have \(apples) apples."
    -> "I have 3 apples"
var fruitSum = "I have \(apples + pineapples) pieces of fruit."
    -> "I have 5 pieces of fruit."

複数行の文字列を扱う方法

「”(ダブルクォーテーション)」を3つ並べて""" 文字列 """と囲ってあげる。

var mailContent = """
Hi,bro.
It has been a long time.
How is everything?
"""

辞書型と配列

配列と辞書型の宣言には「 」を使い、要素にアクセスするにはインデックスやキーを[ ]内に書く。 コンマは最後の要素のあとにも書くことができる。

var shoppingArray = ["banana", "milk", "nuts", "salmon",]
    ->["banana", "milk", "nuts", "salmon"]
print(shoppingArray[2])
    -> "nuts"

var presidentsDictionary = [
    "Shinzo": "Japan",
    "Trump": "America",
    "Putin": "Russia"
    ]
    ->["Shinzo": "Japan","Trump": "America", "Putin": "Russia"]
print(presidentsDictionary["Shinzo"])
    -> "Japan"

空の配列と辞書

空の配列や辞書型の変数を宣言する場合は、初期化する構文を使う。

var emptyArray = [String]()
    -> []
var emptyDictionary = [String: Float]()
    -> []

配列と辞書型の変数がすでに宣言されていて、型が明らかな場合は以下の方法で空にすることが可能。

var shoppingArray = ["banana", "milk", "nuts", "salmon"]
shoppingArray = []
    -> [] //Array<String>

var presidentsDictionary = ["Shinzo": 63, "Trump": 71, "Putin": 65]
presidentsDictionary = [:]
    -> [:] //Dictionary<String, Int>