Euphoria序列


表示序列由大括號{},由逗號分隔的列表中的物件。一個序列可以包含原子和其他序列。例如:

{2, 3, 5, 7, 11, 13, 17, 19}
{1, 2, {3, 3, 3}, 4, {5, {6}}}
{{"Zara", "Ayan"}, 52389, 97.25}
{} -- the 0-element sequence

可以選擇一個單一的元素序列,給予在方括號中的元素個數。元素號從1開始。

例如,如果x包含{5,7.2,0.5,13},則x[2]是7.2。假設X[2]包含{11,22,33},現在如果我們問為x[2],我們得到{11,22,33},如果我們要求的X [2] [3]我們得到原子33。

例子:

#!/home/euphoria-4.0b2/bin/eui

sequence x
x = {1, 2, 3, 4}

for a = 1 to length(x) do
   printf(1, "value of x[%d] = %d\n", {a, x[a]})
end for

這裡的 length() 是一個興奮的內建函式,它返回序列的長度。上面的例子會產生以下結果:

value of x[1] = 1
value of x[2] = 2
value of x[3] = 3
value of x[4] = 4

字串

字串是一個字元序列。這可能是輸入的兩種方法中的一個:

(a) 使用雙引號:

"ABCDEFG"

(b) 使用raw字串表示:

-- Using back-quotes
`ABCDEFG`

or

-- Using three double-quotes
"""ABCDEFG"""

嘗試下面的例子來理解這個概念:

#!/home/euphoria-4.0b2/bin/eui

sequence x
x = "ABCD"

for a = 1 to length(x) do
   printf(1, "value of x[%d] = %s\n", {a, x[a]})
end for

這將產生以下結果:

value of x[1] = A
value of x[2] = B
value of x[3] = C
value of x[4] = D

字串陣列

String陣列,可以實現使用序列如下:

#!/home/euphoria-4.0b2/bin/eui

sequence x = {"Hello", "World", "Euphoria", "", "Last One"}

for a = 1 to length(x) do
   printf(1, "value of x[%d] = %s\n", {a, x[a]})
end for

這將產生以下結果:

value of x[1] = Hello
value of x[2] = World
value of x[3] = Euphoria
value of x[4] =
value of x[5] = Last One

Euphoria 結構

結構可以採用序列如下:

#!/home/euphoria-4.0b2/bin/eui

sequence employee = {
   {"John","Smith"},
    45000,
    27,
    185.5
   }

printf(1, "First Name = %s, Last Name = %s\n", 
                 {employee[1][1],employee[1][2]} )

這將產生以下結果:

First Name = John, Last Name = Smith

直接序列可以執行以下操作:

一元操作:

當應用到序列的一元運算子實際上是應用序列中的每個元素的結果,得到的序列具有相同的長度。

#!/home/euphoria-4.0b2/bin/eui

sequence x
x = -{1, 2, 3, 4}

for a = 1 to length(x) do
   printf(1, "value of x[%d] = %d\n", {a, x[a]})
end for

這將產生以下結果:

value of x[1] = -1
value of x[2] = -2
value of x[3] = -3
value of x[4] = -4

算術運算:

幾乎所有的算術運算可以執行的序列,如下所示:

#!/home/euphoria-4.0b2/bin/eui

sequence x, y, a, b, c
x = {1, 2, 3}
y = {10, 20, 30}

a = x + y
puts(1, "Value of a = {")
for i = 1 to length(a) do
   printf(1, "%d,", a[i])
end for
puts(1, "}\n")

b = x - y
puts(1, "Value of b = {")
for i = 1 to length(a) do
   printf(1, "%d,", b[i])
end for
puts(1, "}\n")

c = x * 3
puts(1, "Value of c = {")
for i = 1 to length(c) do
   printf(1, "%d,", c[i])
end for
puts(1, "}\n")

這將產生以下結果:

Value of a = {11,22,33,}
Value of b = {-9,-18,-27,}
Value of c = {3,6,9,}

命令列選項:

使用者可以通過命令列選項一個欣快指令碼和可以存取它作為一個序列使用的 command_line() 函式如下:

#!/home/euphoria-4.0b2/bin/eui

sequence x

x = command_line()

printf(1, "Interpeter Name: %s\n", {x[1]} )

printf(1, "Script Name: %s\n", {x[2]} )

printf(1, "First Argument: %s\n", {x[3]})

printf(1, "Second Argument: %s\n", {x[4]})

這裡的 printf() 是一個Euphoria 的內建函式。現在,如果你執行這個指令碼如下: 

$eui test.ex "one" "two"

這將產生以下結果:

Interpeter Name: /home/euphoria-4.0b2/bin/eui
Script Name: test.ex
First Argument: one
Second Argument: two