קוד זה ישמיד את עצמו בעוד …

אחת הפעולות שהרבה מאוד ספריות צריכות, אבל לא קיימות בשפה, היא לבצע הודעה על כך שהקוד ישן ואינו נתמך, ומגיע משהו במקומו (או שלא).

מרבית שפות התכנות, ירימו על כך חריגה כלשהי, היות ואין תמיכה לכך בתחביר עצמו. אלו שאינן תומכות בחריגות יציגו הערה כלשהי למשהו בסגנון stderr. אבל בשפת פסקל, יש לכך תמיכה בתחביר עצמו. התמיכה נוספה ל FPC 2.6.0 ודלפי 2009.

התחביר נראה כך:

unit oldunit deprecated 'Please use NewUnit';

interface
...
implementation
...
end.

מה שעשינו, הוא אמרנו למהדר להציג את ההודעה על כך שהיחידה עצמה היא deprecated והצגנו הודעה שהמהדר יציג של מה מחליף אותה.
אבל נגיד ואנחנו רוצים לעשות את זה על פונקציה מסויימת:

...
procedure OldProc; deprecated 'Please use NewProc instead';
...

נגיד ונרצה לעשות זאת למחלקה:

...
type
  TOldClass = class
  end deprecated 'Use NewClass';
...

וכן הלאה …
עכשיו בואו נראה מה קורה בפועל. נגיד ויש לנו קוד כזה:

{$mode objfpc}
program test;

type
  TOldClass = class
  end deprecated 'Use NewClass';

var
  A : TOldClass;
begin
  a := TOldClass.create;
  a.free;
end.

צעקת המהדר תהיה:

test.pas(9,16) Warning: Symbol "TOldClass" is deprecated: "Use NewClass"
test.pas(11,17) Warning: Symbol "TOldClass" is deprecated: "Use NewClass

שימו לב, כי הוא מדווח על בעיה בעת הכרזת המשתנה, וכן בעת האתחול באמצעות המחלקה הישנה, אבל לא על ההגדרה עצמה. כלומר הגדרה אינה מעלה שום הודעה, רק השימוש עצמו הוא זה שגורר את ההודעה.

2 מחשבות על “קוד זה ישמיד את עצמו בעוד …

    1. ik_5 מאת

      דבר ראשון FPC לא מתחייב כפרוייקט לתמוך בתקן הרשמי של פסקל (ואת זה אומרים המפתחים הראשיים).

      דבר שני, התחביר נתמך גם בדלפי. למעשה אמברקדו יצרו אותו לפני FPC.

      כרגע יש לך 2 מהדרים מובילים בשוק, שזה FPC ודלפי, ושניהם תומכים בזה. יש לך גם את Oxygen שהוא משהו לגמרי שונה. ויש לך את gpc שהוא מממש רק דברים שנמצאים בתקנים, ולכן כעט למעט באגים, כבר אין עליו עבודה.

      יש לך עוד כל מיני מהדרים במקומות וסביבות שונות, אבל הם פחות נפוצים.

כתיבת תגובה

הזינו את פרטיכם בטופס, או לחצו על אחד מהאייקונים כדי להשתמש בחשבון קיים:

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s