Opsional Arguments Pada Function


Untuk mendefinisikan argument-argument yang dapat diterima di dalam deklarasi function, kita menggunakan tag cfargument. Kumpulan argument-argument yang dideklarasikan berbentuk sebuah structure di dalam scope ARGUMENTS.


Misalkan kita mendeklarasikan sebuah function dengan nama multiArguments seperti contoh di bawah ini:

<cffunction 
	name="multiArguments"
	>

	<cfargument 
		name="argumentSatu" 
		/>
	
	<cfargument 
		name="argumentDua" 
		/>
	
	<cfreturn ARGUMENTS	/>

</cffunction>

<cfdump 
	label="dump dari function multiArgument" 
	var="#multiArguments('satu', 'dua', 'tiga', 'empat', 'lima')#"
	/>

Output dari dump function multiArgument adalah sebagai berikut:

dump multiArgument

dump multiArgument

Terlihat dari contoh di atas, jika sebuah argument tidak kita definisikan menggunakan cfargument, maka key dari structure ARGUMENTS adalah nomer incremental dari argument yang kita berikan pada saat pemanggilan fungsi tersebut secara berurutan mulai dari sebelah kiri (lihat key 3, 4, dan 5).

Contoh sederhana dari pemanfaatan scope ARGUMENTS ini dapat kita pergunakan untuk enhancement dari built-in function Max seperti contoh berikut ini:

<cffunction 
	name="maxNumber" 
	returntype="numeric" 
	hint="enhancement dari built-in fungsi Max"
	>
	
	<!--- Max memerlukan 2 argument --->
	<cfargument 
		name="number1" 
		type="numeric" 
		required="Yes" 
		hint="number"
		>
	
	<cfargument 
		name="number2" 
		type="numeric" 
		required="Yes" 
		hint="number"
		>
	
	<!--- set angka maximum dari ke-2 argument yang dibutuhkan --->
	<cfset maxValue = Max(number1, number2)>
	
	<!--- jika ada lebih dari atau sama dengan 3 argument pada saat pemanggilan --->
	<cfif ArrayLen(StructKeyArray(ARGUMENTS)) gte 3>
		
		<!--- loop untuk menentukan nilai maximum --->
		<cfloop collection="#ARGUMENTS#" item="key">
			
			<!--- set angka maximum --->
			<cfset maxValue = Max(maxValue, ARGUMENTS[key])>
			
		</cfloop>
		
	</cfif>

	<!--- return --->
	<cfreturn maxValue>

</cffunction>

<cfoutput>

#maxNumber(5,2,8,4,5,1,9,8,7,0)#

</cfoutput>

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: