preloader
學習

以精簡形式傳入多個參數到Ruby function

Ruby 的 function 允許多個參數傳入,只允許傳出一個回傳值。此篇教大家以精簡形式傳入多個參數。

 

撰寫程式時,可能會因當初規劃不良,而時常變動函式的傳入參數數量,例如:

def method_1( dataStructure_1, dataStructure_2, flag_operation_1, flag_operation_2 )

.

.

.

end

 

轉變成

def method_1( dataStructure_1, dataStructure_2, flag_operation_1, flag_operation_2, flag_operation_3, flag_operation_4)

.

.

.

end

 

提供大家一個技巧,精簡地傳入參數:使用 Ruby 的 Array 資料結構傳入參數。

Ruby 的 Array 資料結構容許,一個Array同時裝載多種型態的元素(element),element 可以是 Integer, String, Hash……等等。這個特性可以用在精簡地傳入參數,舉例如下:

將上面有六個傳入參數的method_1修改一下,變成

def method_1( dataStructure_1, dataStructure_2, array_flag_operation )

  flag_operation_1 = array_flag_operation[0] # flag_operation_1 can be an object type of string or integer, float.

  flag_operation_2 = array_flag_operation[1] # flag_operation_2 can be an object type of string or integer, float.

  flag_operation_3 = array_flag_operation[2] # flag_operation_3 can be an object type of string or integer, float.

  flag_operation_4 = array_flag_operation[3] # flag_operation_4 can be an object type of string or integer, float.

.

.

.

end

 

呼叫 callee method_1前,caller 或是 main procedure 只要依序放入 flag 變數到存放眾多 flag 的 array 變數即可,例如:

array_many_flags_collection = Array.new

array_many_flags_collection[0] = flag_1

array_many_flags_collection[1] = flag_2

array_many_flags_collection[2] = flag_3

array_many_flags_collection[3] = flag_4

 

然後呼叫 method_1:

method_1( my_dataStructure_1, my_dataStructure_2, array_many_flags_collection )

即可。