川のブログ

川の適当気ままなブログです。 

Swift 基礎文法 part3

こんにちはかわです。

アドベントカレンダー14記事目です。

がんばります。

kawakawa.hatenablog.com

辞書とオプショナル型

var score: [String: Int] =[
   "math": 90,
    "kokugo": 75,
    "science":  80,
    "english": 90
]

print(score["english"]) // => Optional(90)

score["society"] = 35

print(score["society"]!)// => 35 アンラップした状態

print(score["P.E"]) // => nil

var name: String?   // => オプショナル型

print(name)

name = "kawa"

print(kawa) // => Optional("kawa")

// オプショナルバインディング

var value: String?
value = "こんにちは"

if let value = value { // アンラップ処理
    print(value) // => こんにちは
}

関数

func add(a : Int, b: Int) -> Int{
    return a + b
}

print(add(a: 1, b: 2))

//外部引数名の指定
func sub(num1 a: Int, num2 b: Int) -> Int{
    return a - b
}

print(sub(num1: 3, num2: 1)) 

//引数名省略
func mul(_ a: Int, _ b: Int) -> Int{
   return a * b
}

print(mul(5, 4))

//可変長引数
func sum(_ a: Int...) -> Int { //a には配列が入る
    var sum: Int = 0
    for num in a{
        sum += num
    }
    return sum
}

print(sum(1, 2, 3, 4, 5))

enum

/*enumの定義
書式
enum enum名: 型名{
    case 列挙子
}
*/
enum Fluit{
   case Apple
   case Orange
}

throw処理 と defer処理

//エラータイプの宣言

enum Myerror: Error{
    case InvalidValue
}
/*
エラーをthrowする可能性がある関数

throwを行う可能性がある関数の宣言
    func 関数名(引数) throw -> 戻り値の型

throw処理の記述
    throw エラータイプのプロトコルに準拠したenum

*/
func doubleUp(_ value: Int) throws -> Int{
    if value < 0{
        throw Myerror.InvalidValue
    }
    
    return value * 2
}

//エラーハンドリング
do{
    //deferには処理終了時に必ず行う処理を記述
    defer{
        print("処理が終了しました")
    }
    var doubleResultValue = try doubleUp(-1) //tryを付ける必要がある
    print("正常終了")
    
}catch Myerror.InvalidValue {
    print("Error")
}

/*
正常終了時

 正常終了
 処理が終了しました

ERROR時

 処理が終了しました
 Error
*/

以上

kawakawa.hatenablog.com

Swift 基礎文法 part2

こんにちはかわです。

アドベントカレンダー13記事目。

もうまにあわない。

kawakawa.hatenablog.com

今回は

今回もSwiftの基礎文法やっていきます。

if文

var num: Int = 5

if num <= 5{
    print("5以下だよ")
}else if num <= 10 && num > 5{
    print("5より大きく10以下だよ")
}else{
    print("10より大きいよ")
}

switch文

let name = "kawa"

switch name{
    case "naka":
        print("あなたはなかですね")
    case "kawa", "river":
        print("あなたはかわですね")
    default:
        print("だれだ君は?")
}

範囲

let age: Int = 18
switch age{
case 0..<18:
    print("17歳未満だね")
case 18...22:
    print("大学生かな")
default:
    print("大人かな")
}

配列

var numbers: [Int] = [1, 2, 3, 4, 5]
numbers.append(6) // =>  [1, 2, 3, 4, 5, 6]

let names = ["hoge", "name", "kawa"]

for文

let names = ["kawa", "naka", "river"]

for name in names{
    print("\(name)だよ")
}

let num = 8

for index in 1...9{
    print(num * index)
}

以上

kawakawa.hatenablog.com

Swift 基礎文法 part1

こんにちはかわです。

アドベントカレンダー12記事目。

全く間に合ってない。

今回は

急遽Swiftを学ばなきゃいけなくなった。

メモ程度にまとめる。

swift 3.0

標準出力

print

print("Hello World")
// => Hello World

コメントアウトは//

四則演算

それぞれ計算を載せる

print(5 + 4)
// => 9
print(5 - 4)
// => 1
print(5 * 4)
// => 20
print(5 / 4)
// => 1
print(5 % 4)
// => 1
数字と記号の間に空白を入れる場合,両方に空白を入れないとエラー
print(5 *4)
// => error
print(5* 4)
// => error
print(5*4)
// =>20

定数

let 定数名: データ型 = 値

let num: Int = 5 
let pi: Double = 3.14
let str: String = "kawa"

print(num) // 5
print(pi) // 3.14
print(str) // kawa

変数

var 変数名: データ型 = 値

キャメルケース
var num: Int = 5
var pi: Double = 3.14
var str: String = "kawa"

式展開

(変数or定数)

let name: String = "kawa"
var age: Int = 100

print("\(name)は現在\(age)歳です")
//=> kawaは現在100歳です

キャスト(型変換)

データ型(変数)

var num: Int = 5
var pi: Double = 3.14

print(Double(num) * pi)
//=>15.7
print(num * pi)
//=>error

以上

kawakawa.hatenablog.com