本帖最后由 pusofalse 于 2010-1-27 12:28 编辑
- -|||, 不必客气。有时写代码为了代码的美观,或者纯粹为了单行执行多条语句,可以使用以上方法,也可以调用以下的这个函数:Func _AssignVar(ByRef $vVar, $vValue = 0, $vReturn = "", $iError = @error, _
$iExtended = @extended, $vExpression = 0)
$vVar = $vValue
Return SetError($iError, $iExtended, $vReturn)
EndFunc
这个函数的好处在于,可以为一个变量赋值,而@error和@extended的值不会因为调用此函数而受到影响,函数的返回值即是函数的$vReturn参数。除了$vVar之外,其他参数可以是任意的表达式。$vExpression在函数内部没有任何作用,单纯是为了调用其他函数不必再另写一行而已。
$vValue、$vReturn、$iError、$iExtended这4个参数的顺序很重要,在一行完整语句的执行中,如果有函数的嵌套用法,总是从左向右、从内向外扩展出函数的返回值,而@error的值也在不断发生变化,上面4个参数的顺序,只是依据我个人书写的习惯来安排的。如果希望@error和@extended的值来自于上一行语句,那么这就约束了$vValue和$vReturn的值不能来自于一个函数调用,解决的方法是在_AssignVar中再套一层_AssignVar,或者将$iError、$iExtended写在$vValue、$vReturn之前,这样做带来的结果是可以让@error、@extended完全不受函数调用的影响,但同时会牺牲了代码的简洁。当然这只是以我现在的认知来说的。 |