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 )
即可。