「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>
 
 
== 参考文献 ==