【語法探索】ABAP 字符串 '' || `` 等的區別。


今天和大佬探討了一個為啥

DATA ts TYPE TABLE OF string.
ts = VALUE #( ( 'A' ) ).

會報錯的問題,報錯為類型沖突。

從而重新理解了char以及string,字符串操作的幾個符號。

首先,abap對string的定義為:a text string literal,這是個deep的結構。 char類型的定義為A text field literal,是個常規結構。

我們先分析'' ``的區別,從abap關鍵字文檔查詢可知:

Syntax Name Possible Characters
'...' Text field literal String of any alphanumeric characters. The data type is c with the length of the enclosed characters (including trailing blanks). 
`...` Text string literal String of any alphanumeric characters. The data type is string. A text string literal can have a maximum of 255 characters. 

 由上可知,' '的本意為創建一個c類型,所以我們常用的string = ' '.其實都是不規范的,這是創建了一個C類型強行賦值給了string,正規的寫法應該是string = ``.

當然了,我們對abap程序的要求向來都是能用就行...

接下來是||,測試可知,||用來創建也是不會錯的,那||是個什么東西呢?

最初我只是用||來拼接字符串(很好用),用來替代&,從未考慮過深層次的東西。

這回我認真查了一發。看到了這么一句話:new syntax form of string template |{}|

從string template我們可知,這東西的目的就是構造一個string

The purpose of a string template is to create a new character string out of literal texts and embedded expressions.

簡單翻譯就是,這玩意就是用文本加內嵌的表達式({變量})創建一個新的string。

綜上,我們可以更合理的使用這三個符號,從而讓我們的程序變得更加規范和美觀。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM