「D言語/関数」の版間の差分
削除された内容 追加された内容
bodyの説明が無いが、DebianとかCent OSとかの枯れたOSのサポートの事も考えてほしい。人柱Fedoraですら今でもgdcに残ってるんだから、CentOSとDebianには今後しばらく残り続ける。 |
インターフェース(抽象型)について記述。 |
||
484 行
よって学習の際には、C++のクラス・構造体のメンバ関数を参考にしよう。
== インターフェース ==
関数を作る時、インターフェースというものによって、型だけを別個、抜き出して指定できる。
なんのために使うか疑問に思うかもしれないが、おそらく元ネタになっただろうJavaやC#にインターフェースというものがあり、D言語にもインターフェースという機能がある。[[w:インタフェース (抽象型)]]
下記の例では、分かり易さのために1つの関数しかインターフェースに入れてないが、複数の関数を入れることも出来る。
<syntaxhighlight lang="D">
import std.stdio;
interface siyou {
int kansuu(int n);
}
class jissou : siyou {
int kansuu(int n) {
return 4 + n;
}
}
void main(){
int n = 13;
jissou b = new jissou();
writeln( b.kansuu(n) );
}
</syntaxhighlight>
;実行結果
17
;解説
関数の型だけでは、何も中身が分からないので、クラスの継承によって、その関数の中身を定義する。
C++だと、クラス class と 構造体 struct に互換性があるが、しかしD言語のインターフェースでは class でないといけない。
structで試しても、コンパイルがエラーになるだけである。
;備考
契約プログラミングと合わせてインターフェースを使う事もできる<ref>[http://www.kmonos.net/alang/d/interface.html インターフェイス - プログラミング言語 D (日本語訳)] 2020年7月19日に閲覧して確認</ref>
== 参考文献 ==
|