Возвращение рано из функции в классическом ASP - PullRequest
20 голосов
/ 04 февраля 2010

Есть ли способ вернуться рано из функции в классическом ASP, а не запустить всю длину функции? Например, допустим, у меня есть функция ...

Function MyFunc(str)
  if (str = "ReturnNow!") then
    Response.Write("What up!")       
  else
    Response.Write("Made it to the end")     
  end if
End Function

Могу я написать так ...

Function MyFunc(str)
  if (str = "ReturnNow!") then
    Response.Write("What up!")       
    return
  end if

  Response.Write("Made it to the end")     
End Function

Обратите внимание на оператор return, который, конечно, я не могу сделать в классическом ASP. Есть ли способ прервать выполнение кода там, где находится оператор return?

Ответы [ 3 ]

33 голосов
/ 04 февраля 2010

Да, используя exit function.

Function MyFunc(str)
  if str = "ReturnNow!" then
    Response.Write("What up!")       
    Exit Function
  end if

  Response.Write("Made it to the end")     
End Function

Я обычно использую это при возврате значения из функции.

Function usefulFunc(str)
   ''# Validate Input
   If str = "" Then
      usefulFunc = ""
      Exit Function
   End If 

   ''# Real function 
   ''# ...
End Function
4 голосов
/ 04 февраля 2010

С классическим ASP вам нужно использовать Exit Function:

Function MyFunc(str)
  if (str = "ReturnNow!") then
    Response.Write("What up!")       
    Exit Function
  end if

  Response.Write("Made it to the end")     
End Function
3 голосов
/ 04 февраля 2010

Как было указано, вы можете использовать Exit Function, но вам следует соблюдать осторожность.В приведенном вами простом примере действительно нет никакого преимущества, который никакой другой код не выполнил бы в любом случае.

Размещение точек выхода по всему куску кода может усложнить отслеживание и отладку.Более серьезно, это может привести к тому, что последующие изменения в коде станут сложнее, что потребует более масштабных изменений и, следовательно, увеличит риск.Следовательно, такой шаблон следует считать «неприятным запахом».

Типичный сценарий, в котором его разумно приемлемо, - это когда код может сделать некоторые утверждения относительно своих входных параметров, прежде чем продолжить с текстом тела.Кроме этого, вы должны быть в состоянии выразить действительно, действительно веские причины, чтобы сделать это.

Вы можете сказать: «Если я сделаю это таким образом, у меня будет больше If структур и увеличит выделение вкод чрезмерно ".Если это так, то в любом случае функция содержит слишком много кода и должна быть преобразована в меньшие функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...