ユーザ用ツール

サイト用ツール


tutorial:nim:variables_and_constants

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
tutorial:nim:variables_and_constants [2024/08/20 02:05] – 削除 - 外部編集 (不明な日付) 127.0.0.1tutorial:nim:variables_and_constants [2024/08/20 02:05] (現在) – ↷ tutorial:nim:variables-and-constants から tutorial:nim:variables_and_constants へページを名称変更しました。 freemikan
行 1: 行 1:
 +====== 変数と定数 ======
 +
 +何らかの値に名前をつけるには、変数と定数を利用する方法があります。
 +
 +===== 変数 =====
 +
 +変数を扱うには''var''と''let''を使います。
 +
 +''var''で宣言された変数はミュータブルであり、その後で代入によって値の変更が出来ます。
 +
 +<file nim>
 +var x = 99
 +echo x       #=> 99
 +
 +x = 100
 +echo x       #=> 100
 +</file>
 +
 +
 +''let''で宣言された変数はイミュータブルであり、その後で値を変更することが出来ません。
 +
 +<file nim>
 +let x = 99
 +x = 100      # コンパイルエラー
 +</file>
 +
 +このコードをコンパイルしようとするとエラーになります。
 +
 +  Error: 'x' cannot be assigned to
 +
 +代入しようとしているところで失敗しています。
 +
 +===== 定数 =====
 +
 +定数を扱うには''const''を使います。
 +
 +<file nim>
 +const THE_ANSWER = 42
 +const PI = 3.1415926535897
 +</file>
 +
 +定数の値はコンパイル時に評価できる値でなければなりません。従って次はエラーになります。
 +
 +<file nim>
 +let x = 1
 +const ONE = x  # コンパイルエラー
 +</file>
 +
 +コンパイルしようとするとエラーになります。
 +
 +  Error: cannot evaluate at compile time: x
 +
 +当然、定数は値を後で変更することは出来ません。
 +
 +===== var、let、constの使い分け =====
 +
 +''var''と''let''については、まず''let''を優先するべきです。値の変更が必要とされるのであれば''var''を使います。
 +
 +''let''と''const''については、''let''が変数であることと、''const''がコンパイル時に決定されることを考慮して、適切な方を選択します。大まかな目安の一例としては、局所的な値を保持するものであれば''let''、プログラムの各所に影響を及ぼすもので不変であるものは''const''とする使い分けが考えられます。''let''はあくまで変数であり、''const''は定数であることを考えれば、円周率のπなどは''const''の方が適切であると、なんとなく判断が出来ます。
 +
 +いずれにしても絶対的なルールはありません。センスが問われるところでもあります。
 +
 +===== 変数、定数の型 =====
 +
 +Nimは[[wpjp>静的型付け]]の言語であり、変数や定数は全て型を持ちます。上の例では型を明示していませんでした。これは[[wpjp>型推論]]が働くためです。設定しようとしている値の型によって、コンパイラが自動で変数や定数の型を決定してくれます。多くの場合は、コードが簡潔になるので好ましいことです。しかし、型推論に頼らず、明示的に型を記述することも出来ます。
 +
 +<file nim>
 +let x: int = 99
 +const PI: float = 3.1415926535897
 +</file>
 +
 +上の例では特にメリットはありませんが、場合によっては、明示的に型を記述する方が意図が明らかになり、コードが読みやすくなる場合があります。
 +
 +記述した型と値の型が一致しなければ、コンパイル時にエラーになります。
 +
 +<file nim>
 +let x: int = 1.2
 +</file>
 +
 +次のようなエラーメッセージが出力され、コンパイルに失敗します。
 +
 +  Error: type mismatch: got 'float64' for '1.2' but expected 'int'
 +
 +浮動小数点数が自動的に整数に変換されることはありません。
  

特に明示されていない限り、本Wikiの内容は次のライセンスに従います: CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki