سؤال

ولدي هذا الرمز في برولوج:

dynamic(player_at/1).
player_at(house).
goto(X) :- retract(player_at(house)), assert(player_at(X)).

ولكن ما زلت على هذا الخطأ:

uncaught exception: error(permission_error(modify,static_procedure,player_at/1),retract/1)

وعندما تنفيذ غوتو (فو).

ولقد قرأت ديناميكية وثائق ، ولكن أنا لا يمكن معرفة كيفية استخدامها، على الأقل في gprolog. أنا شيء مفقود؟

هل كانت مفيدة؟

المحلول

وإصلاح الخط الأول من قبل معلق مسبقا :-:

:- dynamic(player_at/1).

وبدون :- الخط سيكون dreefine dynamic/1 المسند، بدلا من تنفيذ المسند dynamic القائمة.

وتطبيقات حاسوب أخرى (ولكن ليس gprolog) تدعم هذا أيضا:

:- dynamic player_at/1.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top