Swift/Base
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[Swift]]
*基本 [#b7acfb39]
Java などでは、クラスを実体化したものだけをインスタンスと...
しかし、Swiftではどのような型であってもデータをインスタン...
*データ型と変数 [#oc6e0f48]
Swiftでは、データ型のほとんどは値型(value type)であり、参...
ポインタを表す記述方法はないが、複数の変数から同時に参照...
**基本的なデータ型 [#h408f31c]
|種類|型名|説明|
|整数型|Int|符号つき整数。|
|整数型|UInt|符号なし整数。|
|実数型|Float|浮動小数点数|
|実数型|Double|浮動小数点数。精度が高い。|
|論理型|Bool|リテラルはtrueとfalse。整数型ではない|
|文字|Character|Unicodeの1文字を表す。整数型ではない。|
|文字|UnicodeScalar|Unicodeの文字コードを表す。|
|文字列|String|Uicode文字列。NSStringと互換性があるが、値...
**変数と定数 [#ecc81115]
-変数 -- 値を書き換えることができる変数
-定数 -- 初期値を設定したら、値を書き換えることができない...
変数の定義
var 変数名 [: 型] [= 式]
var age: Int = 18 // 型宣言と初期値の代入
var age = 18 // 初期値から型(Int型)は推論される
age = 20 // 値を変更できる
定数の定義
let 変数名 [: 型] = 式
let name: String = "Taro Yamada"
let age = 2016 - 1992 // 初期値から型(Int型)は推論される
Swiftでは暗黙の型変換は行わない。
let n: Int = 10
var a: Double = n // エラー
var b: Double = Double(n) // 明示的に型変換する
**文字列 (String型) [#m69d4ab0]
String型のインスタンスは、プログラム中で""(ダブルクォート...
また + 演算子で連結して新しい文字列を生成することができる。
Unicodeの文字コード(スカラ値)を \u{8文字の16進数} で直接...
let specialKeys = "command=\u{2318}, opeiont=\u{2325}"
また、’"\(式)"のように記述することで式を値とした文字列を...
let n = 8
let str = "\(n) の2乗は \(n*n) です"
print(str)
print関数は引数で与えられたものを(引数が複数個でも)そのま...
print(2016,"年",7,"月") // 2016年7...
print(2016,"年",7,"月", separator: "; ") // 2016; 年...
print(2016,"年", terminator: "") // 2016年と...
print(7,"月") // 7月 が追...
**配列 Array [#j1d25295]
配列に格納されるインスタンスは全て同じ型である必要がある。
次の6つの例はどれも同じ意味である。
var a: [Int] = [2, 5, 8, 11, 7]
var a: Array<Int> = [2, 5, 8, 11, 7]
var a = [2, 5, 8, 11, 7]
var a = [Int]() ; a.append(2); a.append(5); a.append(8)...
var a = Array<Int>() ; a.append(2); a.append(5); a.appe...
var a:[Int] = [] ; a.append(2); a.append(5); a.append(8...
配列の各要素を表示する
for var i=0 ; i<a.count; i=i+1 {
print(a[i])
}
**演算子 [#h990562b]
代入の演算子は値を返さない。
a = b = 1 // エラー
if a = b { ... } // エラー
演算子の両側に空白があるか、どちらにも空白がない場合には...
a + b // 二項演算子
a+b // 二項演算子
演算子の左側に空白がない、かつ、右側に空白がある(または区...
a++ b // 後置演算子
演算子の左側に空白がある(または区切りがある)、かつ、右側...
a ++b // 前置演算子
Swift言語では自分で演算子を定義できるため、上記のルールと...
n /(i +1) //演算子 / と + の前後に空白をいれるか、ま...
**識別子 [#p2354467]
識別子として ASCII 文字を用いる場合 camel case 方式で名前...
-UpperCamelCase -- 型名、クラス名
-lowerCamelCase -- メソッド名、変数名
Objective-C で作成されたプログラムを Swift で使う場合、も...
バッククォート``で囲む。
var `fallthrough` = 20
**型に別名をつける [#k83539fb]
既存の型名や、自分で定義したクラスや構造体の名前に別名を...
typealias SInteger = Int32
*制御構文 [#f47559e5]
**if文 [#e59052ba]
if 条件節 {
文...
} else if 条件節 {
文...
} ese {
文...
}
次の文は同じ意味となる。
if a >= 0 {
b = a
} else {
b = -a
}
b = a>= 0 ? a: -a
**while文 [#c16ae8f5]
while 条件節 {
文...
}
** repeat - while 文 [#q01d3c44]
repeat {
文...
} while 条件節
** for 文 [#k95ac9e7]
for 初期化; 条件式; 更新 {
文...
}
(例)
for var i=0; i<10; i=i+1 {
print(i)
}
** for - in 文 [#ld615b86]
for 定数名 in 式 [where 式] {
文...
}
(例)
for i in 0..<10 {
print(i)
}
forの後に書かれた定数名は、暗黙のうちに let が記述されて...
範囲演算子
- A..<B --- A≦x<B
- A...B --- A≦x≦B
for i in 1..<15 where i % 2 != 0 && i % 3 != 0 {
print(i, terminator:" ")
}
print("")
1 5 7 11 13 // 1から14までのうちで、2でも3でも割り切...
** switch 文 [#p0022a2b]
-分岐に用いる値がいずれかの分岐先に必ず一致しなくてはいけ...
-分岐先の文の実行が終了するとswitch文が終了する。C言語のs...
-分岐に用いる値の型に、文字列や構造を持つ型も利用できる。
-必要に応じて、caseに条件を記述できる。
switch 式 {
case label1:
文... // break は不要
case label2:
文... // break は不要
default:
文...
}
switch n {
case 0: print("one") // break は不要
case 1: // エラー。何らかの文が必要。
case 2,3: // 複数を列挙することができる
print("two or three")
case 4:
print("four, but go through ")
fallthrough // 下のcase節の文をそのまま実行...
case 5:
print("five")
case 6: break; // break を記述してもよい。
default: // defaultは最後に書く(オプショ...
print("several)
}
以下の例では、変数 score の値は 65 なので、条件としては「...
「case 60 ..< 70」の両方に適合するが、上に書いてある条件
「case limit..<75」の文が実行され、「追試験」と表示される...
let limit = 45
var score = 65
switch score {
case limit..<75: print("追試験")
case 90 ... 100: print("秀")
case 80 ..< 90: print("優")
case 70 ..< 80: print("良")
case 60 ..< 70: print("可")
default: print("不可")
}
** ラベル付きのループ文 [#t8850a87]
** ラベル付きの if 文、 switch 文 [#ye95baa3]
** do 文 [#t90e940c]
コードブロック内で変数や定数を定義した場合、そのコードブ...
Swift ではC言語のように {} でコードブロックを定義すること...
そのような場合は Swift では do {} と記述する。
これはエラー処理につかう do - catch 文で catch を記述し...
if a >= 0 {
b += a
{ let t = a; a = c; c = t } // NG
}
if a >= 0 {
b += a
do { let t = a; a = c; c = t } // OK
}
do文にラベルをつけることができる。
lab: do {
for i in 0 ..< 10 {
c + 3
if c > b { break lab } // do文から脱出する
}
c = 0
}
終了行:
[[Swift]]
*基本 [#b7acfb39]
Java などでは、クラスを実体化したものだけをインスタンスと...
しかし、Swiftではどのような型であってもデータをインスタン...
*データ型と変数 [#oc6e0f48]
Swiftでは、データ型のほとんどは値型(value type)であり、参...
ポインタを表す記述方法はないが、複数の変数から同時に参照...
**基本的なデータ型 [#h408f31c]
|種類|型名|説明|
|整数型|Int|符号つき整数。|
|整数型|UInt|符号なし整数。|
|実数型|Float|浮動小数点数|
|実数型|Double|浮動小数点数。精度が高い。|
|論理型|Bool|リテラルはtrueとfalse。整数型ではない|
|文字|Character|Unicodeの1文字を表す。整数型ではない。|
|文字|UnicodeScalar|Unicodeの文字コードを表す。|
|文字列|String|Uicode文字列。NSStringと互換性があるが、値...
**変数と定数 [#ecc81115]
-変数 -- 値を書き換えることができる変数
-定数 -- 初期値を設定したら、値を書き換えることができない...
変数の定義
var 変数名 [: 型] [= 式]
var age: Int = 18 // 型宣言と初期値の代入
var age = 18 // 初期値から型(Int型)は推論される
age = 20 // 値を変更できる
定数の定義
let 変数名 [: 型] = 式
let name: String = "Taro Yamada"
let age = 2016 - 1992 // 初期値から型(Int型)は推論される
Swiftでは暗黙の型変換は行わない。
let n: Int = 10
var a: Double = n // エラー
var b: Double = Double(n) // 明示的に型変換する
**文字列 (String型) [#m69d4ab0]
String型のインスタンスは、プログラム中で""(ダブルクォート...
また + 演算子で連結して新しい文字列を生成することができる。
Unicodeの文字コード(スカラ値)を \u{8文字の16進数} で直接...
let specialKeys = "command=\u{2318}, opeiont=\u{2325}"
また、’"\(式)"のように記述することで式を値とした文字列を...
let n = 8
let str = "\(n) の2乗は \(n*n) です"
print(str)
print関数は引数で与えられたものを(引数が複数個でも)そのま...
print(2016,"年",7,"月") // 2016年7...
print(2016,"年",7,"月", separator: "; ") // 2016; 年...
print(2016,"年", terminator: "") // 2016年と...
print(7,"月") // 7月 が追...
**配列 Array [#j1d25295]
配列に格納されるインスタンスは全て同じ型である必要がある。
次の6つの例はどれも同じ意味である。
var a: [Int] = [2, 5, 8, 11, 7]
var a: Array<Int> = [2, 5, 8, 11, 7]
var a = [2, 5, 8, 11, 7]
var a = [Int]() ; a.append(2); a.append(5); a.append(8)...
var a = Array<Int>() ; a.append(2); a.append(5); a.appe...
var a:[Int] = [] ; a.append(2); a.append(5); a.append(8...
配列の各要素を表示する
for var i=0 ; i<a.count; i=i+1 {
print(a[i])
}
**演算子 [#h990562b]
代入の演算子は値を返さない。
a = b = 1 // エラー
if a = b { ... } // エラー
演算子の両側に空白があるか、どちらにも空白がない場合には...
a + b // 二項演算子
a+b // 二項演算子
演算子の左側に空白がない、かつ、右側に空白がある(または区...
a++ b // 後置演算子
演算子の左側に空白がある(または区切りがある)、かつ、右側...
a ++b // 前置演算子
Swift言語では自分で演算子を定義できるため、上記のルールと...
n /(i +1) //演算子 / と + の前後に空白をいれるか、ま...
**識別子 [#p2354467]
識別子として ASCII 文字を用いる場合 camel case 方式で名前...
-UpperCamelCase -- 型名、クラス名
-lowerCamelCase -- メソッド名、変数名
Objective-C で作成されたプログラムを Swift で使う場合、も...
バッククォート``で囲む。
var `fallthrough` = 20
**型に別名をつける [#k83539fb]
既存の型名や、自分で定義したクラスや構造体の名前に別名を...
typealias SInteger = Int32
*制御構文 [#f47559e5]
**if文 [#e59052ba]
if 条件節 {
文...
} else if 条件節 {
文...
} ese {
文...
}
次の文は同じ意味となる。
if a >= 0 {
b = a
} else {
b = -a
}
b = a>= 0 ? a: -a
**while文 [#c16ae8f5]
while 条件節 {
文...
}
** repeat - while 文 [#q01d3c44]
repeat {
文...
} while 条件節
** for 文 [#k95ac9e7]
for 初期化; 条件式; 更新 {
文...
}
(例)
for var i=0; i<10; i=i+1 {
print(i)
}
** for - in 文 [#ld615b86]
for 定数名 in 式 [where 式] {
文...
}
(例)
for i in 0..<10 {
print(i)
}
forの後に書かれた定数名は、暗黙のうちに let が記述されて...
範囲演算子
- A..<B --- A≦x<B
- A...B --- A≦x≦B
for i in 1..<15 where i % 2 != 0 && i % 3 != 0 {
print(i, terminator:" ")
}
print("")
1 5 7 11 13 // 1から14までのうちで、2でも3でも割り切...
** switch 文 [#p0022a2b]
-分岐に用いる値がいずれかの分岐先に必ず一致しなくてはいけ...
-分岐先の文の実行が終了するとswitch文が終了する。C言語のs...
-分岐に用いる値の型に、文字列や構造を持つ型も利用できる。
-必要に応じて、caseに条件を記述できる。
switch 式 {
case label1:
文... // break は不要
case label2:
文... // break は不要
default:
文...
}
switch n {
case 0: print("one") // break は不要
case 1: // エラー。何らかの文が必要。
case 2,3: // 複数を列挙することができる
print("two or three")
case 4:
print("four, but go through ")
fallthrough // 下のcase節の文をそのまま実行...
case 5:
print("five")
case 6: break; // break を記述してもよい。
default: // defaultは最後に書く(オプショ...
print("several)
}
以下の例では、変数 score の値は 65 なので、条件としては「...
「case 60 ..< 70」の両方に適合するが、上に書いてある条件
「case limit..<75」の文が実行され、「追試験」と表示される...
let limit = 45
var score = 65
switch score {
case limit..<75: print("追試験")
case 90 ... 100: print("秀")
case 80 ..< 90: print("優")
case 70 ..< 80: print("良")
case 60 ..< 70: print("可")
default: print("不可")
}
** ラベル付きのループ文 [#t8850a87]
** ラベル付きの if 文、 switch 文 [#ye95baa3]
** do 文 [#t90e940c]
コードブロック内で変数や定数を定義した場合、そのコードブ...
Swift ではC言語のように {} でコードブロックを定義すること...
そのような場合は Swift では do {} と記述する。
これはエラー処理につかう do - catch 文で catch を記述し...
if a >= 0 {
b += a
{ let t = a; a = c; c = t } // NG
}
if a >= 0 {
b += a
do { let t = a; a = c; c = t } // OK
}
do文にラベルをつけることができる。
lab: do {
for i in 0 ..< 10 {
c + 3
if c > b { break lab } // do文から脱出する
}
c = 0
}
ページ名: