【超超入門】Swiftに入門してみた


日頃ほぼLaravelしか触っていない人間が、
Swiftに入門してみたので、メモメモ。✏️

## コメント
```Swift
//　コメントはスラッシュ2個(Command + /)
```

## 変数
変数名はキャメルケースを用いる。最後にカンマは不要。

```Swift
var name = "Hoge"
name = "Foo"
print(name)

// Foo
```

## 定数
```Swift
let age = 20
print(age)

// 20
```

## 型の指定
Swiftは、自動的に型を推論してくれるしてくれるみたい。
ただ、バグ防止のため型を指定する。

```Swift
// 型の指定
// var 変数名: 型名 = 値
var string: String = "文字列" //String型（文字列）
var int: Int = 1 //Int型（整数）
var float: Float = 1.2345 //Float型（小数）
var double: Double = 1.2345 //Double型（小数）
var bool: Bool = true // Bool型（真偽値）
```

## 演算
```Swift
print(10 + 2) //12
print(10 - 2) //8
print(10 * 2) //20
print (10 / 2) //5
print(10 % 3) //0

//文字列同士の結合にも+が使える
print("10" + "2" + "これは結合される") //102これは結合される
```

## if文（条件分岐）
```Swift
var myAge: Int = 20

if myAge > 20 {
    print("成人！")
} else if myAge == 20 {
    print("ハタチ！")
} else {
    print("未成年！")
}

// ハタチ！
```

## 関数
関数名はキャメルケースを用いる
### 引数に値を渡す1
関数を呼び出し、値を渡すときは`(name: "ウッチャン")`←このような形で渡す

```Swift
func callName(name: String) {
    print("あなたは" + name + "って言うんですね！")
}
callName(name: "ウッチャン")

//　ウッチャン
```

### 引数に値を渡す2
関数側の引数にアンスコ`(_ name: String)`←このように書くと、
呼び出す側で引数名の指定を省略できる

```Swift
func callName(_ name: String) {
    print("あなたは" + yourName + "って言うんですね！")
}
callYourName("ナンチャン") 

// ナンチャン
```

### 戻り値、返り値

```Swift
func CallName(name: String) -> String {
    return name + "!"
}
print(CallName(name: "ウッチャンナンチャン"))

// ウッチャンナンチャン!
```

## 配列
```Swift
var array = ["hoge", "foo", "fuga"]
print(array[1])

// foo
```

## for文
```Swift
for i in 1...10 {
    print(i)
}
```

## クラスとインスタンス
```Swift
//クラスを作成する
class Twitter {
    // プロパティを作成する
    var id: Int!
    var userName: String!
    var content: String!
    
    //関数を作成する
    func tweet() {
        print("ユーザID：\(id!)")
        print("ユーザ名：\(userName!)")
        print("投稿内容：\(content!)")
    }
}


//インスタンスを複製し、それらに要素を詰める
let tweetData1 = Twitter()
tweetData1.id = 1234
tweetData1.userName = "Mr.Hoge"
tweetData1.content = "ウッチャン！"
tweetData1.tweet()

let tweetData2 = Twitter()
tweetData2.id = 5678
tweetData2.userName = "Ms.Foo"
tweetData2.content = "ナンチャン！"
tweetData2.tweet()

//ユーザID：1234
//ユーザ名：Mr.Hoge
//投稿内容：ウッチャン！
//ユーザID：5678
//ユーザ名：Ms.Foo
//投稿内容：ナンチャン！

```

# BMI計算するアプリを作成してみた

![jeqoo-00bc6.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697384/43300e51-deba-e978-0205-f4e1fe43ae3d.gif)

```Swift

class ViewController: UIViewController {

    @IBOutlet weak var heightField: UITextField!
    @IBOutlet weak var weightField: UITextField!
    @IBOutlet weak var bmiLabel: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
    
    
    @IBAction func calcButtonAction(_ sender: Any) {
        let doubleH = Double(heightTextField.text!)
        let doubleW = Double(heightTextField.text!)
        bmiLabel.text = calculation(height: doubleH!, weight: doubleW!)
    }
    
    func calculation(height: Double, weight: Double) -> String {
        let h = height / 100
        let w = weight
        var result = w / (h * h)
        result = floor(result * 10) / 10
        return result.description
    }
}



```

とりあえずここまで。




## 参考
https://www.youtube.com/watch?v=x8izf43bjHk
https://www.youtube.com/watch?v=3v4OIds-OOg