Dをつつく7−変数And定数と型推論。永遠に変らないものってあるのかな?2008-07-05 Sat 18:17
今回はプログラムに絶対に必要な変数と定数について一緒に学ぼう。
じゃあ、早速プログラミングをしよう!
dmd variable.d どう?エラーが出るでしょ?これでいいんだ。敢えて間違う事も楽習には大事ピヨ。 エラーメッセージは大体こんなんだよね variableSample.d(12): variable variableSample.Foo.error cannot modify invariant variableSample.d(18): Error: can only initialize const member ID inside constructor variableSample.d(6): Error: foo.MagicNumber is not mutable variableSample.d(19): Error: constant foo.MagicNumber is not an lvalue このエラーメッセージが多くの事が分るピヨ。 まずは知っている人が多いと思うconst 属性(D言語では属性と呼ぶ)に関連するエラーを読むピヨ。 エラーを読むと指定したフィールドや変数は、 コンストラクタか宣言部でしか初期化出来ない 事が分るピヨ。これについては予想が出来た人が多かったと思う。 もうむずむずしていている人がいると思うけど、次はお待たせ invariant属性に関連するエラーを読もう。 エラーを読んで分るのは、この属性を指定したフィールドや変数は 絶対に変更出来ない 事ピヨ。const属性との違いは、コンストラクタ内ですら駄目 だということなんだ。厳格ピヨね。 C言語ではconstがポインタを通したら変更できたりして色々な混乱を生んだから、 D言語の設計者はこの属性を作ったんだろうね。この属性使えるピヨね。 これでお終いだと思った人もいると思うけど、実はまだ楽習するところがあるピヨ。 どこがポイントか分ったかな? 実はこの部分が新しいんだ。
此処を良く見て。型が指定されていないよね。
これはauto属性と言うんだ。
この属性は、LL言語なんかに使用されている要素で、
型を推論する機能なんだ。
たった4文字で長い型名を省略できるのは便利だよね。
あれぇ?Fooだと3文字だから1文字増えているじゃん!おっほん。その辺は置いといて話を前に進めるよ。 この属性は便利だけど、多用するとコードの可読性が低下してエラーの元になりがち だから注意してね。 今度はお終い。疑わないで。もう本当に終わるよ。 |
この記事のコメント |
コメントの投稿 |
||
|
|
||
| 管理者だけに閲覧 | ||
|
|
||
この記事のトラックバック |
|
| 無差別に技術をついばむ鳥 |
|