「D言語/関数」の版間の差分
削除された内容 追加された内容
Angol Mois (トーク | 投稿記録) M →基本 |
→スコープ: シャドウイングは許されない(コンパイルエラー) タグ: 2017年版ソースエディター |
||
64 行
9 -->
== スコープブロック文 ==
D言語では、関数の内部における変数の有効範囲(スコープ)の性質が、C言語とはやや
ブロック文( <code>{ ... }</code> で囲まれた部分)は スコープブロックは入れ子にすること可能です。 ;[https://paiza.io/projects/Y-ukLeqDBuGKSchaJKdR7Q?language=d コード例]:<syntaxhighlight lang="D" line>
<syntaxhighlight lang="D">▼
import std.stdio;
int a = 99;
void
int a = 2;
writef("aは
// 新たなスコープ
{
// int a = 42; ← 6行目の a を隠してしまう(シャドウイング)ので a を識別子に使えない。
writef("aは
}
writef("aは
}
void main() {
▲ kansu();
writef("aはmainでいま%d\n", a);
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
aはfunc0内の内側のスコープでいま2
aは
▲aはkansuでいま2
aはmainでいま99
;コード例
111 ⟶ 104行目:
int a = 99;
void
a = 2; // 変数宣言しない(できない)
writef("aは
}
void main() {
▲ kansu();
writef("aはmainでいま%d\n", a);
}
126 ⟶ 118行目:
;実行結果
<pre>
aは
aはmainでいま2
</pre>
上記の例では、関数
その結果、aの値がmainでも「2」に変わります。
== 内部関数 ==
|