モジュール

arithmetic.d

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// モジュールの宣言の前に書いていいものはコメント文と, 空白文字, 改行
// #! から始まる文だけ。#!から始まるこれはこの講座では詳しく述べません.
 
module arithmetic;
 
// 特に何も指定しない場合グローバルスコープ.
// 外部から利用することができる.
// 加算
int add(int a, int b){
  return a + b;
}

// 減算 
int sub(int a, int b){
  return a - b;
}

// 乗算
int mul(int a, int b){
  return a * b;
}

// 除算
int div(int a, int b){
  return a / b;
}

// private を指定した場合はファイルスコープ. このファイル内からしか
// アクセスすることができない.
private int WxH(int w, int h){
  return w * h;
}
 
// public はグローバルスコープ.
// このモジュールがいからもアクセスすることができる.
public int volume(int w, int h, int d){
  return WxH(w, h) * d;
}

identity_matrix.d

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
module identity_matrix;

import std.stdio;

public void printIdentity(){
  int[4][4] identity;

  /* Initialize identity matrix */
  for(int i = 0; i < 4; i++){
    for(int j = 0; j < 4; j++){
      if(i==j)
	identity[i][j] = 1;
      else
	identity[i][j] = 0;
    }
  }

  /* Print identity matrix */
  for(int i = 0; i < 4; i++){
    for(int j = 0; j < 4; j++)
      writef("%2d ", identity[i][j]);
    writeln();
  }
}

main_arith.d

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
/*
  Build It: dmd -w main_arith.d arithmetic.d identity_matrix.d
*/
import std.stdio;
import arithmetic;
import identity_matrix;

void main(){
  writeln("From customized arithmetic module:");
  writeln( "add(90, 30) = ", add(90, 30) );
  writeln( "sub(90, 30) = ", sub(90, 30) );
  writeln( "mul(90, 30) = ", mul(90, 30) );
  writeln( "div(90, 30) = ", div(90, 30) );
  // writeln( WxH(90, 30) );
  // This is forbidden, because we can't use a private method in one module.
  writeln( "volume(90, 30, 40) = ", volume(90, 30, 40) );

  // Ouput an identity matrix
  printIdentity();
}

main_arith.d の実行結果は:

[cactus:~/code_d/d_tuts/arith]% ./main_arith.d
From customized arithmetic module:
add(90, 30) = 120
sub(90, 30) = 60
mul(90, 30) = 2700
div(90, 30) = 3
volume(90, 30, 40) = 108000
 1  0  0  0
 0  1  0  0
 0  0  1  0
 0  0  0  1

Previous topic

ポインタ

Next topic

配列