LoginSignup
9
9

More than 5 years have passed since last update.

Swift入門 勉強記録 その2 変数、定数、文字列

Last updated at Posted at 2014-09-20

・Swiftに関する他の記事はこちら
Swift入門 勉強記録 その1 Swiftとは、Playground起動

Swift入門 勉強記録 その2 変数、定数、文字列

Swift入門 勉強記録 その3 セミコロン

Swift入門 勉強記録 その4 数値、真偽値

Swift入門 勉強記録 その5 Tuple(組)とは

Swift入門 勉強記録 その6 数値を文字列とするには

Swift入門 勉強記録 その7 繰り返し

Swift入門 勉強記録 その8 条件分岐

Swift入門 勉強記録 その9 Optional型

Swift入門 勉強記録 その10 Collection
 

変数

変数の定義は
var 変数名:型 = 値
だ。

文字列で試していこう。
文字列の型はStringだ。

1.下記のように入力してみる

import UIKit
var hello:String = "こんにちは"
println(hello)

画面右側に結果が表示された。

また、上部メニューから、
View → Assistant Editor → Show Assistant Editor
でコンソール画面を開き、結果を表示させることもできます。
スクリーンショット 2014-09-20 15.49.13.png

2.変数の値を変更してみるぞ
var hello:String = "こんにちは"の次の行に1行追加した。

import UIKit

var hello:String = "こんにちは"
hello = "ニーハオ"
println(hello)

[結果]
スクリーンショット 2014-09-20 15.53.12.png

3.1行目を削除して、少し修正

import UIKit

var hello = "ニーハオ"
println(hello)

なんと、型を宣言していないのにエラーにならない!!!

これは型推測と呼ばれる機能のようだ。
コンパイラが変数の型を推測し、宣言してくれているのだ。
ダブルクォーテーションの中で文字を複数入力しているので、コンパイラが文字列だなと推測し、String型にしてくれているのだ。
結果として、型を宣言しなくてもエラーにならなかったのだ。

コンパイル時に型推測をしていることに注目です。
Objective-C以外詳しく知らないのだが、実行時に型を推測する言語もあるようだ。
その場合、文字列型に違う型の値を入れてしまうと、エラーになる。
Swiftはコンパイル時に型推測しているため、型に間違いがあった場合、
コンパイル時に気づくことができるので、不具合を含んだままアプリをリリースしてしまうことはありません。

例えば、下記のように入力してみましょう。

import UIKit

var hello = "ニーハオ"
hello = 0
println(hello)

文字列型の変数に数値を入力したため、エラーが表示されます。

Objective-Cでプログラミングするときと比較して、
プログラミング入力を減るがアプリの品質は落ちない。
また、入力量が少なくなるので、コードを読みやすくしてくれます。

文字列の結合

1.文字列を結合してみよう

下記のように入力してみよう。

import UIKit

var hello = "こんにちは"
hello = hello + " 世界"
println(hello)

スクリーンショット 2014-09-20 16.17.42.png

文字列を+で結合できるのだ。
Objective-Cを学んだことがある人しかわからないが、
NSMutableStringを使ったり、stringWithFormat:を使って結合させるわずらわしさが軽減された。

さらに、+=を使って結合させることも可能だ。

import UIKit

var hello = "こんにちは"
hello += " 世界"
println(hello)

スクリーンショット 2014-09-20 16.19.41.png

定数

値を変更しないものを変数で定義してしまうと、アクシデントで値を変更してしまい、不具合のもととなります。
値を変更しない場合は定数を追加ましょう。

定数の定義は
let 変数名:型 = 値
だ。

文字列で試していこう。
文字列の型はStringだ。

import UIKit

let hello:String = "こんにちは"
hello += " 世界"
println(hello)

スクリーンショット 2014-09-20 16.24.09.png

残念。定数を変更しようとしているので、エラーだ。
hello += " 世界"
の行を削除すれば、エラーはなくなるぞ。

varとletの使い分けにより、Mutableか否かを制御できます。
※文字列の話から変わってしまうが、Objective-Cを学んだことがある人はNSArrayとNSMutableArrayなどMutableかどうかを使い分けていたと思いますが、varとletで制御できるようになるのでは。

変数で定義するか、定数で定義するか?

変更する必要がないなら、letで宣言したほうがいいです。
知らず知らずに変更してしまうことを防ぐことができます。
また、実行速度がvarを使う時よりも速いようだ。

SwiftのString型は値だ

下記のように入力してみよう

var hello = "hello"
var alternativeHello = hello
alternativeHello += ",and bye"
println(alternativeHello)
println(hello)

スクリーンショット 2014-09-20 16.45.06.png

変数helloと変数alternativeHelloの結果が異なるぞ。

Objective-Cを使っていた人はString型を使うときは要注意だ。

NSStringの考えのままだと、やっちまうことになる。

・Swiftに関する他の記事はこちら
Swift入門 勉強記録 その1 Swiftとは、Playground起動

Swift入門 勉強記録 その2 変数、定数、文字列

Swift入門 勉強記録 その3 セミコロン

Swift入門 勉強記録 その4 数値、真偽値

Swift入門 勉強記録 その5 Tuple(組)とは

Swift入門 勉強記録 その6 数値を文字列とするには

Swift入門 勉強記録 その7 繰り返し

Swift入門 勉強記録 その8 条件分岐

Swift入門 勉強記録 その9 Optional型

Swift入門 勉強記録 その10 Collection

9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9