ノート的なやつ

学んだことの備忘録です。ご指摘等お待ちしております。

動的型付けと型推論

RubyからSwift4に鞍替えし、型付けについて疑問を持ったので。

参考: 動的型付けと型推論の違い - にわとりプログラマーの備忘録

動的型付け:

動的型付け(どうてきかたづけ、英: dynamic typing)とは、プログラミング言語で書かれたプログラムにおいて、変数や、サブルーチンの引数や返り値などの値について、その型を、コンパイル時などそのプログラムの実行よりも前にあらかじめ決めるということをせず、実行時の実際の値による、という型システムの性質のことである。

型推論

型推論(かたすいろん)とはプログラミング言語の機能の1つで、静的な型付けを持つ言語において、変数や関数の型を宣言しなくてもそれを導くのに使われた関数の型シグネチャなどから自動的に型を決定する機構のこと。

by wikipedia
要するに、コンパイル後にプログラムが実行されるときに値によって型が決まるのが動的型付け、コンパイルするときに型を推測して決定されるのが型推論ってことみたいですね。

だから、Ruby

x = "str"

p x.class

x = 1234

p x.class

の実行結果は

String
Fixnum

上記のようにちゃんと実行されるのに対して、 Swiftで同じことをやると

var x = "str"
print(type(of: x))

x = 1234
print(type(of: x))


error: repl.swift:4:5: error: cannot assign value of type 'Int' to type 'String' x = 1234 っていうエラーが出るのね、なるほど