真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

ABAP關鍵字ISBOUND,ISNOTINITIAL和ISASSIGNED怎么使用

本篇內容主要講解“ABAP關鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“ABAP關鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用”吧!

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

ABAP里的IS BOUND, IS NOT INITIAL和IS ASSIGNED這組關鍵字,如果平時不留心,很容易理解地似是而非。今天我們就來說一說它們的區(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.

簡單翻譯成中文:

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

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

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

ABAP關鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用

IS ASSIGNED: 對于檢測的field symbol,該關鍵字判斷該field symbol是否分配有內存區(qū)域。

這三個關鍵字交織在一起,就形成了一些有趣的排列組合。

比如,是否存在NOT INITIAL, 但同時也NOT BOUND的變量?是否存在同時滿足IS INITIAL, NOT BOUND和IS ASSIGNED的field symbol? 下面我們用一個簡單的ABAP報表來研究這些排列組合。

完整的測試代碼:

ABAP關鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用

同時滿足NOT INITIAL和NOT BOUND的引用變量

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

ABAP關鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用

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

IS ASSIGNED

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

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

ABAP關鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用

運行時會拋出GETWA_NOT_ASSIGNED錯誤:Field symbol has not yet been assigned.

ABAP關鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用

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

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

答案是肯定的。

ABAP關鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用

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

該報表打印輸出如下:

ABAP關鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用

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

ABAP關鍵字IS BOUND, IS NOT INITIAL和IS ASSIGNED怎么使用

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


標題名稱:ABAP關鍵字ISBOUND,ISNOTINITIAL和ISASSIGNED怎么使用
文章出自:http://weahome.cn/article/poseic.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部