共計 1378 個字符,預計需要花費 4 分鐘才能閱讀完成。
本篇內容主要講解“如何編寫 NOT include 的源碼”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓丸趣 TV 小編來帶大家學習“如何編寫 NOT include 的源碼”吧!
(1) 從評論區能看出,很多朋友都找到了謎題的突破口,即 NOT= NOT(NOT). 這是典型的 ABAP 類靜態方法調用的語法,因此說明,在名為 NOT 的 INCLUDE 里,包含了一個名為 NOT 的 ABAP 類,有一個名為 NOT 的靜態方法。同時,這個靜態方法調用的前面出現了 OR 這個布爾邏輯運算符,只能有一種情況才能通過語法檢查,就是 NOT 靜態方法的輸出參數為 RETURNING 類型,然后該輸出參數作為 OR 的操作數。
值得一提的是,很多其他編程語言都禁止使用關鍵字保留字來命名標識符或者類,而 ABAP 卻沒有這個限制,顯得有點特立獨行。
(2) 也有朋友在評論區提到,代碼可執行部分以 IF 開頭,但是卻沒有以 ENDIF 結尾。唯一的解釋,就是在 NOT 這個 include 里,聲明了包含 ENDIF 語句的宏,并把宏的名稱取名為 NOT.
(3) ABAP 里感嘆號的用法。
ABAP 幫助文檔里說的很清楚,! 作為 ABAP 里的轉義字符,能夠告訴 ABAP 編譯器,! 后面緊跟的并不是關鍵字,而是普通的 ABAP 標識符。
給出的例子也很清晰,如果有人非要用 CHANGING 和 USING 作為形式參數的名稱,只需要在前面加上感嘆號即可。
而如果感嘆號后面跟的并不是真的 ABAP 關鍵字,而是普通的標識符,那又會如何呢?
答案是,此時感嘆號會直接被忽略。看下面的例子,加上感嘆號的效果和不加一致。
(4) 現在我們已經知道了,題目中的!NOT,暗示大家在 NOT include 里,還定義了一個名為 NOT 的變量。
首先我們把謎題里迷惑人眼球的障眼法全部拿掉。
在有 NOT 參與的 ABAP 邏輯判斷語句里,出現偶數個 NOT,相當于一個 NOT 也未出現過 (類似負負得正的原理),出現奇數個 NOT,只相當于出現一個 NOT.
所以題目中那多余的一系列 NOT,就像《笑傲江湖》中衡山掌門莫大先生那套“衡山百變千幻云霧十三式”中的虛招一樣,能讓不明就里的對手眼花繚亂。
人稱“琴中藏劍,劍發琴音”的莫大,憑借這手如夢如幻的劍法,在衡山城外擊殺了嵩山十三太保之一的“大嵩陽手”費彬。即使武功強如費彬,也沒弄看透莫大劍法中的虛招。而親愛的 ABAP 顧問們,這道謎團中重復的 NOT 虛招,大家看透了沒?
仔細觀察代碼中所有出現!NOT 的地方,按照上述法則去除掉多余的 NOT 之后,能夠提取出兩個規律:
a. !NOT 前面至少有一個 IF,OR 或者 AND
b. !NOT 后面直接結束,并未出現 IS INITIAL 或者 XXX, XXX 等判斷語句。
什么樣的 ABAP 變量類型允許這種操作呢?
整型不行:
字符串類型不行:
而 SELECTION-OPTIONS 就可以。
這個 SELECTION-OPTIONS 是 ABAP 古董級的功能了,在 SAPGUI 下做 Dynpro 開發的顧問們會經常用,而 SAP Cloud Platform ABAP 編程環境下已經不再支持了。
上述四個語法點逐一突破后,如何編寫 NOT include 的源碼,思路也就清晰了。
源代碼如下:
到此,相信大家對“如何編寫 NOT include 的源碼”有了更深的了解,不妨來實際操作一番吧!這里是丸趣 TV 網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!