Euphoria - 變數



變數只不過是保留的記憶體位置,用於儲存值。這意味著當您建立變數時,您會在記憶體中保留一些空間。

根據變數的資料型別,直譯器分配記憶體並決定可以在保留的記憶體中儲存什麼。因此,透過為變數分配不同的資料型別,您可以在這些變數中儲存整數、小數或字元。Euphoria 資料型別在不同的章節中進行了解釋。

這些記憶體位置稱為變數,因為它們的值在其生命週期內可以更改。

變數宣告

Euphoria 變數必須顯式宣告以保留記憶體空間。因此,在為變數賦值之前,必須宣告變數。

變數宣告包含一個型別名稱,後跟要宣告的變數列表。例如 -

integer x, y, z

sequence a, b, x

當您宣告變數時,您為變數命名,並定義在程式執行期間可以合法分配給變數的值型別。

僅僅宣告一個變數不會為它分配任何值。如果您在為其分配任何值之前嘗試讀取它,Euphoria 將發出執行時錯誤,例如“變數 xyz 從未被賦值”。

賦值

等號(=)用於為變數賦值。可以按照以下方式為變數賦值 -

變數名稱 = 變數值

例如 -

#!/home/euphoria/bin/eui

-- Here is the declaration of the variables.
integer counter
integer miles
sequence name

counter = 100 -- An integer assignment
miles = 1000.0 -- A floating point
name = "John" -- A string ( sequence )

printf(1, "Value of counter %d\n", counter )
printf(1, "Value of miles %f\n", miles )
printf(1, "Value of name %s\n", {name} )

這裡 100、1000.0 和 "John" 分別是分配給 countermilesname 變數的值。此程式產生以下結果 -

Value of counter 100
Value of miles 1000.000000
Value of name John

為了防止忘記初始化變數,並且因為它可能使程式碼更易於閱讀,您可以將宣告和賦值結合起來 -

integer n = 5

這等效於以下內容 -

integer n
n = 5

識別符號作用域

識別符號的作用域描述了哪些程式碼可以訪問它。在識別符號相同作用域內的程式碼可以訪問該識別符號,而不在識別符號相同作用域內的程式碼則無法訪問它。

變數的作用域取決於其宣告的位置和方式。

  • 如果它在 for、while、loopswitch 中宣告,則其作用域從宣告開始到相應的 end 語句結束。

  • if 語句中,作用域從宣告開始,到下一個 else、elsifend if 語句結束。

  • 如果變數在某個例程中宣告,則變數的作用域從宣告開始到例程的 end 語句結束。這被稱為私有變數。

  • 如果變數在例程外部宣告,則其作用域從宣告開始到宣告它的檔案的末尾。這被稱為模組變數。

  • 沒有作用域修飾符的 常量 的作用域從宣告開始到宣告它的檔案的末尾。

  • 沒有作用域修飾符的 列舉 的作用域從宣告開始到宣告它的檔案的末尾。

  • 所有沒有作用域修飾符的 過程、函式型別 的作用域從原始檔的開頭開始,到宣告它們的原始檔的末尾結束。

沒有作用域修飾符的常量、列舉、模組變數、過程、函式和型別被稱為 區域性變數。但是,這些識別符號可以在其宣告之前具有作用域修飾符,這會導致它們的作用域擴充套件到宣告它們的檔案之外。

  • 如果關鍵字 global 在宣告之前,則這些識別符號的作用域擴充套件到整個應用程式。應用程式檔案中的任何程式碼都可以訪問它們。

  • 如果關鍵字 public 在宣告之前,則作用域擴充套件到顯式包含宣告識別符號的檔案的任何檔案,或擴充套件到包含依次 public 包含包含 public 宣告的檔案的檔案的任何檔案。

  • 如果關鍵字 export 在宣告之前,則作用域僅擴充套件到直接包含宣告識別符號的檔案的任何檔案。

當您在另一個檔案中 包含 Euphoria 檔案時,只有使用作用域修飾符宣告的識別符號才能被執行包含操作的檔案訪問。包含檔案中的其他宣告對執行包含操作的檔案不可見。

廣告