成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

ABAP關(guān)鍵字ISBOUND,ISNOTINITIAL和ISASSIGNED怎么使用

本篇內(nèi)容主要講解“ABAP關(guān)鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“ABAP關(guān)鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用”吧!

目前成都創(chuàng)新互聯(lián)公司已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計(jì)、洮北網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

ABAP里的IS BOUND, IS NOT INITIAL和IS ASSIGNED這組關(guān)鍵字,如果平時(shí)不留心,很容易理解地似是而非。今天我們就來說一說它們的區(qū)別。

先把SAP幫助文檔抄過來:

IS BOUND

It checks whether a reference variable contains a valid reference. A data reference variable that contains a stack reference, on the other hand, can become invalid even if the reference data object is removed from the stack.

IS INITIAL
checks whether the operand operand is initial. The expression is true, if the operand contains its type-friendly initial value.

IS ASSIGNED
checks whether a memory area is assigned to a field symbol. The expression is true if the field symbol points to a memory area.

簡(jiǎn)單翻譯成中文:

IS BOUND:用于檢查一個(gè)引用變量是否指向了一個(gè)有效的引用。幫助文檔特意提到,如果一個(gè)引用指向的是一個(gè)棧上申請(qǐng)的變量,那么這個(gè)變量會(huì)隨棧的銷毀而被銷毀,因此指向其的引用不再有效。

IS INITIAL: 用于檢查一個(gè)變量的值是否為其數(shù)據(jù)類型對(duì)應(yīng)的初始值。

比如我定義一個(gè)引用變量但不對(duì)其賦值,則IS INITIAL判斷一定為abap_true.

ABAP關(guān)鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用

IS ASSIGNED: 對(duì)于檢測(cè)的field symbol,該關(guān)鍵字判斷該field symbol是否分配有內(nèi)存區(qū)域。

這三個(gè)關(guān)鍵字交織在一起,就形成了一些有趣的排列組合。

比如,是否存在NOT INITIAL, 但同時(shí)也NOT BOUND的變量?是否存在同時(shí)滿足IS INITIAL, NOT BOUND和IS ASSIGNED的field symbol? 下面我們用一個(gè)簡(jiǎn)單的ABAP報(bào)表來研究這些排列組合。

完整的測(cè)試代碼:

ABAP關(guān)鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用

同時(shí)滿足NOT INITIAL和NOT BOUND的引用變量

下圖main方法里,第15行在棧上定義了一個(gè)整型變量number,將其引用賦給類的成員變量dref. 待main方法執(zhí)行之后,number所生存的棧幀被銷毀,因此dref指向的引用不再有效,調(diào)試器里顯示為:FREED STACK.

ABAP關(guān)鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用

現(xiàn)在dref并不是未指向任何引用,而是指向一個(gè)無效的引用,因此dref同時(shí)滿足IS NOT INITIAL和IS NOT BOUND.

IS ASSIGNED

一個(gè)field symbol定義之后,如果不為其分配內(nèi)存區(qū)域,則IS ASSIGNED返回abap_false.

下面的代碼,如果注釋掉第27行的IF條件:

ABAP關(guān)鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用

運(yùn)行時(shí)會(huì)拋出GETWA_NOT_ASSIGNED錯(cuò)誤:Field symbol has not yet been assigned.

ABAP關(guān)鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用

也就是說,無論是讀取field symbol具體的內(nèi)容,還是檢測(cè)其內(nèi)容是否為初始值,為了避免GETWA_NOT_ASSIGNED錯(cuò)誤,我們必須在IS INITIAL判斷之前,使用IS ASSIGNED判斷field symbol是否被分配了內(nèi)存區(qū)域。

是否存在一個(gè)NOT BOUND, IS INITIAL但是卻IS ASSIGNED的field symbol?

答案是肯定的。

ABAP關(guān)鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用

上面代碼第37行定義的名為<any2>的field symbol,在第45行的CLEAR操作完成之后,就同時(shí)滿足這三個(gè)條件。這個(gè)field symbol被分配的內(nèi)存區(qū)域,內(nèi)容并不是整型數(shù)本身,而是一個(gè)指向整型變量的引用。

該報(bào)表打印輸出如下:

ABAP關(guān)鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用

第40行代碼通過ASSIGN分配給<any2>的內(nèi)存區(qū)域并未通過UNASSIGN釋放,因此<any2> IS ASSIGNED始終返回abap_true. 另一方面,這塊內(nèi)存區(qū)域雖然還未釋放,但里面存放的引用變量已經(jīng)不再指向任何一個(gè)有效的變量了,因此IS BOUND返回abap_false. 最后,因?yàn)?lt;any2>施加了CLEAR操作, 又回到了初始化狀態(tài),所以IS INITIAL返回abap_true.

ABAP關(guān)鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用

到此,相信大家對(duì)“ABAP關(guān)鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

分享標(biāo)題:ABAP關(guān)鍵字ISBOUND,ISNOTINITIAL和ISASSIGNED怎么使用
分享地址:http://jinyejixie.com/article2/poseic.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、做網(wǎng)站、電子商務(wù)、網(wǎng)站設(shè)計(jì)移動(dòng)網(wǎng)站建設(shè)、動(dòng)態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
四子王旗| 呈贡县| 莱芜市| 通州区| 杭锦旗| 冀州市| 吉木萨尔县| 肥城市| 禹城市| 文水县| 谢通门县| 扶风县| 平阳县| 石家庄市| 马关县| 界首市| 巩留县| 兴和县| 林州市| 息烽县| 育儿| 舒城县| 榆中县| 保德县| 临沂市| 青州市| 阳江市| 上林县| 黄石市| 苍梧县| 吉安市| 莱阳市| 通化市| 包头市| 澄城县| 三亚市| 肥西县| 建平县| 永胜县| 靖安县| 普兰县|