在程式的世界中,我們常聽到需要定義變數,而變數究竟是什麼呢?
變數在程式中會被寫成像這樣各式各樣的形式:
test = '文字'
test = 123
test = [1,2,3]
test = {'apple':1, 'banana':2}
test = True
以上是Python的表達方法, 拿其中一個例子來說test='文字'的意思會是說 將文字這個值放到test裡面。 當你下次要使用文字這個值的時候 你就可以用test變數,程式會抓取它的值來使用。
在RPA平台像是Power Automate會預設原生輸出的變數,使用上使用者不會很直覺的第一步就去設定自己的變數。
但在功能欄位其實都會有變數區域是可以自己去做設定的。平時在使用這些low-code平台的時候,在處理瀏覽器、excel檔案、檔案處理後會輸出的東西也會被存放在變數中,而這部分平台已經幫忙處理預設好,所以一開始接觸平台時看到可能會不知道那是什麼但其實很重要,例如打開瀏覽器輸出欄位會返回一個%Browser%這就是儲存瀏覽器 值(*有些值也說:物件) 的變數。 補:說物件的原因是因為如果我們列印出%Browser%這個東西的值,他不是只是一個"字串"或數值123,而是一個一整包的瀏覽器相關資料。(有興趣再深入的人可以查物件導向,但一般在使用RPA平台的人能初步搭建完流程才是最重要的!)。
一般變數的名字就會希望命名一個很好的看懂的名稱,存放瀏覽器的值自然就把變數名稱取為Browser,在讀程式碼的其他人員也可以更快理解這裡存放什麼,下一部分要做什麼
雖然使用RPA平台時可能不是自己去設定這些變數,但使用者若懂了這個概念之後,在自己建立流程時多留心自己的專案有輸出哪些變數,便可以更清楚的debug,去看每個變數存放了什麼值,知道可能哪個變數沒有處理好。
變數的種類
而在一般程式碼中值又分很多種類,其中很多語言需要各別去設定每個變數只能存放什麼樣的值。例如在Java中需要明確指出,string, number, [], {}, true.....
String test = "文字“; // test變數只能放字串
char letter = 'D'; // letter變數只能放字元
boolean bool = true; // bool變數只能放布林值
int number = 123; // number變數只能放數字
ArrayList<String> cars = new ArrayList<String>(); // list裡面只能放字串
// {"Taiwan": "Taipei", "Japan":"Tokyo"}
// 存放這樣形式的值,兩邊都只能放字串
HashMap<String, String> captialCities = new HashMap<String, String>();
一但指定了之後,若存放不同種類的值進去這個變數就會出現錯誤,這樣做更謹慎確保程式執行的正確性,可少掉出現錯誤的可能性。
到這邊,我們大概可以先把「變數」這樣子理解:
- 它是一個會貼標籤的盒子:
- 盒子裡放的是「值」(文字、數字、日期、瀏覽器物件……)
- 盒子外面貼的是「名稱」(test、Browser、number、captialCities…) - 名稱如果取得清楚,之後的人(包含自己)在閱讀流程時,更快進入狀況。
在一般程式語言(像 Java)裡,我們會主動去宣告變數、選擇適合的型別;
在 RPA / Power Automate 這種 low-code 平台裡,很多變數雖然是「系統幫你生好的」,但懂不懂它們在存什麼,會決定你 debug 的速度。
當你開始習慣去看「這個步驟輸出了什麼變數」、「這個變數現在到底是什麼值」,其實你就已經在練習真正的程式思維了,而不是只是在做流程的拖拉。
你可以試著做一個簡單的小練習:
- 打開你現在在用的一個流程
- 找看看:
- 打開瀏覽器後,平台幫你準備了哪個變數?
- 讀取 Excel 後,那個資料是存在哪個變數?
- 變數名稱好理解嗎?如果讓別人看,一眼看得懂嗎?如果覺得不夠清楚,試著重新命名一次,看之後是不是比較容易理解整個流程。
只要開始有意識地「看懂變數、好好命名變數」,其實就已經更好的在規劃自己的專案流程,未來也更容易維護。
在下一篇,我們在「有了變數」之後,往下一步走:
用條件(if)和迴圈(loop)讓流程有思考能力。