challenge メソッド名一覧の表示

リフレクション系のお題の続編です。

「ある与えられたオブジェクトtargetのメソッドのうち、 "test_"で始まるものをすべて呼びだす」というコードを書いてください。 引数に関しては都合のいいように仮定して構いません(全部0個、など)。

メソッドという概念がない言語の場合は、 「複数の関数への参照を持っているようなオブジェクト(たとえばパッケージとかモジュールとか)から"test_"で始まる関数をすべて呼び出す」と読み替えても構いません。

Posted feedbacks - Prolog


	
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
:- module(target, []).
test_a :- writeln(test_a).
test_b :- writeln(test_b).
test_x(_) :- writeln(test_x).
no_test :- writeln(no_test).

% 指定されたモジュールの'test_'で始まる引数0の述語を全て実行
call_tests(Module) :-
	forall((  current_predicate(Module:Predicate/0),
	          atom_prefix(Predicate, test_)),
	       Module:Predicate).

:- call_tests(target).
%=> test_a test_b

Index

Feed

Other

Link

Pathtraq

loading...