TOPOS-Ξ を学ぼう!その8「いや、全部必要ってわけでもないのよ」
`space`全体をインポートする方法をお示しします:
// board-system.xi
export space BoardSystem {
properties {
continuous: Topology<Boolean> = true
dimension: Topology<Number> = 2
}
shape Board {
properties {
width: Number
height: Number
}
}
mapping initialize() {
properties {
continuous: Boolean = true
}
path {
setup_surface ->
verify_dimensions ->
prepare_for_use
}
}
}
// classroom.xi
import { BoardSystem } from "board-system.xi"
space Classroom {
properties {
continuous: Topology<Boolean> = true
dimension: Topology<Number> = 3
uses_board: Boolean = true
}
// インポートしたspaceを使用
shape ClassroomBoard extends BoardSystem.Board {
properties {
mounted: Boolean = true
}
}
// BoardSystemの機能を活用
mapping setup_classroom() {
path {
prepare_room ->
BoardSystem.initialize() -> // インポートしたspaceの機能を使用
verify_setup
}
}
}
spaceのインポート/エクスポートに関する重要な特徴:
完全なspaceのエクスポート
export space CompleteSpace { ... }
部分的なエクスポート
space PartialSpace {
export shape ExportedShape { ... }
export mapping ExportedMapping() { ... }
}
様々なインポート方法
// 全体インポート
import { CompleteSpace } from "space-file.xi"
// 特定の要素をインポート
import { Shape1, Mapping1 } from "space-file.xi"
// 別名を付けてインポート
import { CompleteSpace as CustomSpace } from "space-file.xi"
階層的な使用
space NewSpace {
shape Extended extends ImportedSpace.Shape {
// 継承と拡張
}
mapping use_imported() {
path {
ImportedSpace.initialize() ->
perform_local_operation ->
verify_state
}
}
}
このように、spaceレベルでの機能の再利用と構造化が可能です。