nil大特集

Swiftのnil関係の話だけを収集するプロジェクト


初めての人にはこう説明する

nilはnullと一緒

(´∀`*)nullと一緒だよー(大嘘)

class Hello{
    public static void main(String[] args){
        String str = null;
        str = "Hello, null!";
        System.out.println(str);
    }
}
var str: String? = nil
str = "Hello, nil!"
println(str)

Q.↑のSwift版実行したらOptional("")ってついてきたんだけど
A.お前は何も見なかった

?をつけるとなんとかなる

null/nilに対しメソッドを使用してみる。

class Hello{
	public static void main(String[] args){
		String str = null;
		System.out.println(str.length());
	}
}
var str: String? = nil
println(str.toInt())

Q.エラー見る限りnullがどうこうよりtoInt関数がないって怒られてるんだけど
A.うるせー黙れ(ちゃんとStringにtoInt()はあるよ)

実行するときは次のようにすれば大丈夫。

var str: String? = nil
//str = "1"
println(str?.toInt())

Q.ほんとに?
A.ほんとほんと(大嘘)。Xcodeが補完してくれるからなんか言われたら?つけとけばOK(適当)。nilに対してtoInt()をしても特にエラーは起きず、nilと出力されるだけなので落ちることはない。

!をつけるとなんとかなる

関数にnull/nilを与えてみる。

class Hello{
	public static void main(String[] args){
		String str = null;
		System.out.println(Integer.parseInt(str));
	}
}
var str: String? = nil
println(countElements(str))

Q.エラー見る限りnullがどうこうよりプロトコルがどうこうって怒られてるんだけど
A.うるせー黙れ(SwiftのcountElementsは文字数を数えてくれる実在の関数だよ)

実行するときは次のようにすれば大丈夫。中身がnilでないならの話だけど。

var str: String? = "Hello, nil!"
println(countElements(str!))

str = nil
println(countElements(str!))

上はちゃんと実行される。
下は実行時に「unexpectedly found nil while unwrapping an Optional value」と出る。

「初めての人にはこう説明する」まとめ


戻る