challenge メソッド名一覧の表示

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

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

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

Posted feedbacks - Erlang

foo:get(erlang). とかで使えます。
1
2
3
4
5
6
-module(foo).
-export([get/1]).

get(PackageName) ->
  [X || {X, Y} <- proplists:get_value(exports, PackageName:module_info()),
    lists:suffix("_test", atom_to_list(X))].

お題を誤って理解してしまった為、前回投稿したコードは、_test が関数名の末尾に付いた関数の一覧を返します。

今回、投稿するコードは、test_ が関数名の先頭に付いた関数の一覧を返します。

修正箇所は、lists:suffix/2 を lists:prefix/2 にかえただけです。
1
2
3
4
5
6
-module(foo).
-export([get/1]).

get(PackageName) ->
  [X || {X, Y} <- proplists:get_value(exports, PackageName:module_info()),
    lists:prefix("test_", atom_to_list(X))].

Index

Feed

Other

Link

Pathtraq

loading...