Magicode logo
Magicode
0
3 min read

第3話 V言語の変数

https://cdn.apollon.ai/media/notebox/ff4ca64e-bff7-444a-96ec-a835088df5a0.jpeg
カサレリア。katzenです。
前回は、V言語コードの記述で、V言語のコードがどういったものかの触りと、実行方法、コメントについて紹介しました。
わからないことなどありましたら、コメントいただければできる限り答えたいと思います。
さて、今回は「V言語の変数」についてです。

変数宣言

最近のプログラム言語はだいたい変数を宣言しないと使えないようになってきています。PHPもついに型宣言を取り入れるとか。
ちなみに、なぜ宣言が必要なのか?というと話は長くなるのですが、端的に言えばプログラムを書く人間がいい加減だからです。
プログラムの歴史は制限の歴史でもあります。
昔はgotoで遥か彼方に飛ばしたり、メモリのデータをポインタで潰したり。 レジスタに命令を出してフラグ折ったりと好き放題出来ました。 (用語は特に気にしないでいいですが、気になる方は調べていただければと)
で、不可能などなかったというお話ですが、こうなると意図しない動き、バグが発生しやすくなるのですね。
そのため、最近の言語はいい加減な人が書いても安全になるように設計されているのです。
と、話が脱線してしまいましたが、変数を使うには宣言が必要です。
V言語は初期値を入れる形で宣言します。
name := 'ウッソ・エヴィン'
age     := 13
println(name)
println(age)
このように:=を使って宣言します。
文字列を入れれば文字型に。数値を入れれば数値型になります。

V言語の型は、他の言語とそれほど変わりませんので、あまり躓くことはないでしょう。
もしかしたら、runeとか他の言語やメモリ操作のためポインター型に危機感を覚えるかもしれませんが、これについては後日書きたいと思います。
あとは、 公式を見ていただけると具体的にどんなものがあるのかわかると思います。

ミュータブルとイミュータブル

さて、Scalaなどやっていたかたは見出しで伝わると思います。
ドメイン駆動とかでエンティティとかバリューオブジェクト作っているひともわかりますかね。
ミュータブルとは、変数への再代入が許可されている状態です。
ミュータブルとは、その逆で再代入できません。
V言語はデフォルトでイミュータブルです。
私が知る限り、この2種類がある言語はまだかなり少ないです。
具体的にどんなものか、簡単に足し算のプログラムを作ってみましょう。
sum := 1
sum = sum + 1
println(sum)
V言語でなければ、sumは2になるような処理だと思います。
が、V言語ではこれは許されていません。
sum is immutable, declare it with `mut` to make it mutable
こんなエラーが出ます。
イミュータブルな変数には、値を再代入できないのです。
constやdefineなど定数と思ってもいいです。即値とか言ったりもします。
では、再代入したいときにはどうすればいいでしょうか。
エラーにも書かれていますが、mutをつければいいのですね。
mut sum := 1
sum = sum + 1
println(sum)
これでsumは2になりましたね。
面倒と思うかもしれませんが、バグを減らすためです。
複数人で開発するときなど、誰かが勝手に上書きしないように、バリューオブジェクト作って、コンストラクタだけで代入して・・・とか、他の言語ではいろいろ条件を書いたりしないと実現できないことが簡単にできます。
ここらへんの設計についても後日書きたいと思います。
変数にミュータブル、イミュータブルがあると知って混乱しているかもしれません。 でも私達には必要なものだと信じましょう。
次回「V言語の文字列」見てください!

Discussion

コメントにはログインが必要です。