[语法探索]ABAP新语法 COND/SWITCH的小坑
生活随笔
收集整理的這篇文章主要介紹了
[语法探索]ABAP新语法 COND/SWITCH的小坑
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
眾所周知,ABAP提供了新語法COND/SWITCH,可以用來給變量賦值,代替if以及case when,使得代碼更加簡(jiǎn)潔。
一般情況下,在我們主觀意愿上來說,以下代碼,看似是等價(jià)的。
IF lv_strISINITIAL. lv_str = 'new value'. ENDIF.
lv_str=COND#(WHENlv_strISINITIALTHEN'newvalue').
但是其實(shí)不是,因?yàn)镃OND when 只是定義了lv_str 為空時(shí)候的賦值,那么變量本身就有值呢?
答案是,會(huì)給一個(gè)空值。
至此,我們就發(fā)現(xiàn)了一個(gè)小BUG,所以新語法轉(zhuǎn)化為舊的語法,是這樣的,
IFlv_strISINITIAL.
lv_str='newvalue'.
ELSE.
lv_str=''.
ENDIF.
這顯然會(huì)與我們的初衷背道而馳,解決的方式也很簡(jiǎn)單,那就是定義好COND的所有條件。
lv_str = COND #( WHEN lv_str IS INITIAL THEN 'new value' ELSE lv_str ).
這樣一來,我們便不會(huì)丟失原始的值了。
SWITCH的語法和COND道理相同。
"New
lv_str = SWITCH #( n WHEN 1 THEN 'A'
WHEN 2 THEN 'B' ).
"Old
CASE n.
WHEN 1. lv_str = 'A'.
WHEN 2. lv_str = 'B'.
WHEN OTHERS. lv_str = ''.
ENDCASE.
這是一個(gè)比較小的點(diǎn),但是往往這些不引人注目的點(diǎn),會(huì)帶來較大的BUG。
總結(jié)
以上是生活随笔為你收集整理的[语法探索]ABAP新语法 COND/SWITCH的小坑的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言结构和高二的知识,c语言基础知识复
- 下一篇: c++之关于"epsilon&