您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“如何編寫(xiě)NOT include的源碼”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“如何編寫(xiě)NOT include的源碼”吧!
(1) 從評(píng)論區(qū)能看出,很多朋友都找到了謎題的突破口,即 NOT=>NOT( NOT ). 這是典型的ABAP類(lèi)靜態(tài)方法調(diào)用的語(yǔ)法,因此說(shuō)明,在名為NOT的INCLUDE里,包含了一個(gè)名為NOT的ABAP類(lèi),有一個(gè)名為NOT的靜態(tài)方法。同時(shí),這個(gè)靜態(tài)方法調(diào)用的前面出現(xiàn)了OR這個(gè)布爾邏輯運(yùn)算符,只能有一種情況才能通過(guò)語(yǔ)法檢查,就是NOT靜態(tài)方法的輸出參數(shù)為RETURNING類(lèi)型,然后該輸出參數(shù)作為OR的操作數(shù)。
值得一提的是,很多其他編程語(yǔ)言都禁止使用關(guān)鍵字保留字來(lái)命名標(biāo)識(shí)符或者類(lèi),而ABAP卻沒(méi)有這個(gè)限制,顯得有點(diǎn)特立獨(dú)行。
(2) 也有朋友在評(píng)論區(qū)提到,代碼可執(zhí)行部分以IF開(kāi)頭,但是卻沒(méi)有以ENDIF結(jié)尾。唯一的解釋?zhuān)褪窃贜OT這個(gè)include里,聲明了包含ENDIF語(yǔ)句的宏,并把宏的名稱(chēng)取名為NOT.
(3) ABAP里感嘆號(hào)的用法。
ABAP幫助文檔里說(shuō)的很清楚,!作為ABAP里的轉(zhuǎn)義字符,能夠告訴ABAP編譯器,!后面緊跟的并不是關(guān)鍵字,而是普通的ABAP標(biāo)識(shí)符。
給出的例子也很清晰,如果有人非要用CHANGING和USING作為形式參數(shù)的名稱(chēng),只需要在前面加上感嘆號(hào)即可。
而如果感嘆號(hào)后面跟的并不是真的ABAP關(guān)鍵字,而是普通的標(biāo)識(shí)符,那又會(huì)如何呢?
答案是,此時(shí)感嘆號(hào)會(huì)直接被忽略??聪旅娴睦樱由细袊@號(hào)的效果和不加一致。
(4) 現(xiàn)在我們已經(jīng)知道了,題目中的!NOT,暗示大家在NOT include里,還定義了一個(gè)名為NOT的變量。
首先我們把謎題里迷惑人眼球的障眼法全部拿掉。
在有NOT參與的ABAP邏輯判斷語(yǔ)句里,出現(xiàn)偶數(shù)個(gè)NOT,相當(dāng)于一個(gè)NOT也未出現(xiàn)過(guò)(類(lèi)似負(fù)負(fù)得正的原理),出現(xiàn)奇數(shù)個(gè)NOT,只相當(dāng)于出現(xiàn)一個(gè)NOT.
所以題目中那多余的一系列NOT,就像《笑傲江湖》中衡山掌門(mén)莫大先生那套“衡山百變千幻云霧十三式”中的虛招一樣,能讓不明就里的對(duì)手眼花繚亂。
人稱(chēng)“琴中藏劍,劍發(fā)琴音”的莫大,憑借這手如夢(mèng)如幻的劍法,在衡山城外擊殺了嵩山十三太保之一的“大嵩陽(yáng)手”費(fèi)彬。即使武功強(qiáng)如費(fèi)彬,也沒(méi)弄看透莫大劍法中的虛招。而親愛(ài)的ABAP顧問(wèn)們,這道謎團(tuán)中重復(fù)的NOT虛招,大家看透了沒(méi)?
仔細(xì)觀察代碼中所有出現(xiàn)!NOT的地方,按照上述法則去除掉多余的NOT之后,能夠提取出兩個(gè)規(guī)律:
a. !NOT 前面至少有一個(gè)IF,OR或者AND
b. !NOT 后面直接結(jié)束,并未出現(xiàn) IS INITIAL或者 > XXX, <> XXX等判斷語(yǔ)句。
什么樣的ABAP變量類(lèi)型允許這種操作呢?
整型不行:
字符串類(lèi)型不行:
而SELECTION-OPTIONS就可以。
這個(gè)SELECTION-OPTIONS是ABAP古董級(jí)的功能了,在SAPGUI下做Dynpro開(kāi)發(fā)的顧問(wèn)們會(huì)經(jīng)常用,而SAP Cloud Platform ABAP編程環(huán)境下已經(jīng)不再支持了。
上述四個(gè)語(yǔ)法點(diǎn)逐一突破后,如何編寫(xiě)NOT include的源碼,思路也就清晰了。
源代碼如下:
到此,相信大家對(duì)“如何編寫(xiě)NOT include的源碼”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。