見出し画像

#1 「変数・型」Swiftを分かりたい(プログラミング素人の備忘録)

どうも。
久しぶりにプログラミングをやっていこうと思います。ケッシテC#ニアキタワケデハナイデスヨ。

前回

注意

この記事(今シリーズ)は初心者がSwiftをかじりながら、備忘録のような形で投稿していく予定です。
そのため、今シリーズ全体を通して信憑性は非常に低いです。
また専門の方などから見れば、無茶苦茶なこと、おかしなことをしているかもしれませんがご容赦ください。


変数

変数とは再代入できる。

変数の宣言

再代入可能な変数の宣言です。定義時に初期値を与えた場合は型をする。

var 変数名 = 代入する値

var hoge = 2
//hogeはInt型と推論される

型の明示的な宣言

型を明示して宣言できる。

var 変数名: 型名

var variable_value: Int
//variable_numberという変数をInt型で宣言できる。
var variable_number: Int = 2
//こういうこともできるが、意味あるかなぁといった感じ

定数

定数は格納された値を変更しない場合に使用します。

定数の宣言

let 定数名 = 代入される値

let constant_value = 1

ちなみに定数のため以下のコードはエラーとなる

let constant_value = 1
constant_value = 2 //すでにconstant_valueは1で固定されているため再代入は不可

型の明示的な宣言

変数と同じく

let constant_value: String
//String型で宣言
//このあと1度だけ初期化できます。
constant_value = 1 //ここから先は代入不可
constant_value = 2 //これはエラー

複数変数の同時宣言

,を使用して同時に宣言する。varでもletでも使用できます。

var x = 1, y = 2, z = 3

型とは

コンピュータプログラミング計算機科学において、属性を持つデータを分類し、その扱われ方をコンパイラインタープリタに知らせるプログラム。単に(かた、Type)とも言われる。

データ型

だそうです。根本的には理解してないので解説とかはできません。

型一覧

型を明示的に宣言する場合はIntとかつければ良さげ。

型変換(イニシャライザ)

型の変換を行えます。

swiftでは結構簡単にできます。

Int to Double/整数から小数

let int_num = 3
let double_num = Double(int_num)

Double to Int/小数から整数

let double_num = 3.14
let int_num = Int(double_num) //3

小数を整数に変換した場合は切り捨てられます。

String to Double(Int)/文字列から数

こういうこともできるようです。入力された値を計算に使う際に利用できそう。

let str_num = "3"
let int_num = Int(str_num) //3が代入される

入力などの場合はnil(空白)が返ってくる可能性があるのでアンラップとかなんとかで回避しなければいけないそう。詳細は下記。

アンラップ

そもそもswiftにはオプショナル型というものがあるそうで、これはnilの代入を許す型だそうです。これはnilへの操作によるアプリケーションの終了を回避するためだそう。

Optionalは値を包み込むラップ(包み紙)のイメージです。オプショナル型は値をOptionalというラップ1枚で包み込んでいます。すると、たとえ中身がない(=nil)状態でも包み紙だけは存在するため、とりあえず扱うことができます。
オプショナル型の値がnilでも使えるのは、この包み紙が存在しているためです。

しかし、この便利な包み紙があるために値はラッピングされ、直接扱うことができません。扱うためにはラップを取り除き、中身の値を取り出さなくてはいけません。
この包み紙を取り除き、値を取り出すことをアンラップと言います。

どこよりも分かりやすいSwiftの"?"と"!"

どうやらオプショナル型の宣言時に!をつけると自動でアンラップされるそう。一応こんな使い道かなぁ?といった感じ。

var Repeat = false // 繰り返し判定用の変数
    repeat {
        print("値を入力してください。")
        let input_Str = readLine()!
        
        if let input_num = Double(input_Str){
            Repeat = false
            return input_num
        }else{
            Repeat = true //もし変換できなった場合は繰り返す
            print("正しい値を入力してください。")
        }
    }while Repeat == true

アンラップに関してはまた後で勉強したい…多分別記事にします。

まとめ

今回は変数の話と型の話でした。

次回

オプショナル型について…

参考


この記事が気に入ったらサポートをしてみませんか?