
TOPOS-Ξ を学ぼう!その6「この書類を清書しといて!」
お気づきの方もおられますでしょうが、関数のようなものであるMAPPINGは当然ながら引数を持つことができます。f(x)のxには、適切な値入れることができなきゃ関数とは呼べないじゃないですか?
mappingは、関数じゃないですけど・・・
じゃぁどうしろと?
ともかく、関数みたいなもんだから、引数はあります。
巣タップ細胞はよくわかりませんけど、引数はあります。
ほら、このよそからもってきた論文によるとですね・・・・
「作業は、単純なものばかりではない。この書類を清書してというような作業だってありますよね?」
TOPOS-Ξの`mapping`は引数を持つことができます。引数の定義方法を例を通じて説明しましょう。
space Classroom {
// 黒板に文字を書く操作(引数あり)
mapping write_text(text: String, position: Vector2D) {
properties {
continuous: Boolean = true
}
path {
position_at_coordinates(position) ->
write_content(text) ->
verify_written_text
}
}
// 黒板を部分的に消す操作(引数あり)
mapping erase_region(start: Vector2D, end: Vector2D) {
properties {
continuous: Boolean = true
}
path {
move_to_position(start) ->
erase_until(end) ->
verify_clean_region
}
}
// 複数の引数と型パラメータを使用する例
mapping<T> transform_content(
input: T,
scale: Number,
rotation: Number
) {
properties {
continuous: Boolean = true
reversible: Boolean = true
}
path {
validate_input(input) ->
apply_scaling(scale) ->
apply_rotation(rotation) ->
verify_transformation
}
}
}
mappingの引数について重要なポイント:
引数の定義場所
mapping名の後の括弧`()`内で定義
カンマで区切って複数の引数を指定可能
型の指定
`引数名: 型`の形式で指定
基本型(String、Number等)
複合型(Vector2D等)
カスタム型も使用可能
型パラメータ
ジェネリック型は`mapping<T>`のように指定
複数の型パラメータも可能(例:`mapping<T, U>`)
引数の使用
path内の各ステップで引数を使用可能
型安全性が保証される
これにより、再利用可能で柔軟な操作を定義することができます。
さぁ、そろそろ、ソースコードが長ーくみにくーいものになりつつありますね。
いやですねぇ。長いプログラムって。
少なくとも僕はいやです。
昔のプログラム参考書の中に、”無駄な”努力のたまものを多数のページを用いて公開するという恥ずかしい書籍がありましたが、その中に「最長不倒関数」という項目がありましてね。円円と子コピペを繰り返して作り上げたソースコードが燦然と輝いていたわけですよ。
もちろんソースコード1行いくらという契約だったら「ぼろもうけ」なわけですから、ある意味「天才」ではありますよ。
でもやでしょ?コピペなんかしなくても再利用は可能なのに?