2014-11-17 6 views
-4

나는 그것이 참/거짓 여부에 따라 조건 적으로 호출 할 함수가 : 함수가 실제 있는지 확인확인이

If someFunction() = True Then 
    someFunction() 
    ' Other code here... 
End If 

Private Function someFunction() As Boolean 
    MessageBox.Show("Function called!") 
    Return True 
End Function 

이 바람직하지 않게하는 기능을하므로 호출을 메시지 상자 상자가 두 번 표시됩니다.

함수를 호출하지 않고 함수가 true인지 어떻게 확인할 수 있습니까?

참고 : 실행중인 다른 코드 외에도 true/false를 반환하는 함수가 필요합니다.

+4

막 다른 골목에 빠진다면 당신의 기능이 너무 많은 일을하고있는 것입니다. 함수를 두 개의 논리적 부분으로 나눠보십시오. 하나는 조건을 검사하고 다른 하나는 조건 코드를 실행하는 것입니다. – Steve

+3

은 MsgBox를 IF 문에 넣으므로 필요한 경우에만 실행되며 두 번 호출하는 것은 건너 뜁니다. 'needsToDosomething Then DoSomething ....' – Plutonix

+3

당신은 할 수 없습니다. 그리고 이것은 단순한 상식 일뿐입니다. 당신은 분명히 그것을 부르지 않고 무엇이 돌아올 지 알 수 없습니다. 논리를 변경하십시오. –

답변

2

정의 할 수 없습니다!

당신은 두 부분으로 작업을 분할해야 할 수 있습니다

: 뭔가 할 필요가 있는지

  • 기능 checkXX
  • 기능 실제로

또는 작업을 할, 그것을 할 , 함수를 호출하고 테스트 할 "true/false"조건에 따라 함수를 호출하면됩니다.

0

이것은 아주 우아한 해결 방법은 아니며 다른 사람들이 말하는 (즉, 논리를 변경하는) 방법을 제안하지만 실제로 변경할 수있는 방법이 없다면 문제가있는 것일 수도 있습니다. 이 함수를 바람직하지 않게 호출합니다.

If someFunction(False) = True Then 
    someFunction(True) 
    ' Other code here... 
End If 

Private Function someFunction(ByVal showMsg As Boolean) As Boolean 
    If showMsg = True Then 
     MessageBox.Show("Function called!") 
    End If 
    Return True 
End Function 

I가 표시되지 않는 당신의 필요를 고집하고있어주의하시기 바랍니다 : 그래서 메시지 박스를 두 번, 당신이 경우 블록 및 제어 변수로 기능 코드의 부분을 제어에 대한 생각 표시됩니다 메시지 상자를 두 번 반복하지만 다른 질문에 대한 대답은 입니다. 호출하지 않고 함수를 평가할 수 있습니다.은 아니오입니다. 좀 더 기능적이고 우아한 코드를 위해서, 누군가 다른 사람이 이미 제안한 것처럼 함수를 두 개의 논리적 부분으로 분할해야합니다.