2014-12-26 2 views
4

if 진술 문에 궁금한 점이 있으시면 Python pass을 사용할 수 있습니까?내부에서 아무 것도하지 않습니다.

var num = 10 
num > 5 ? doSomethingIfTrue(): doSomethingIfFalse() 

위의 코드는 true 및 false 메소드가 모두 제공되면 괜찮습니다. 만약 내가 진정한 방법을 실행하고 싶다면 어떻게해야합니까 ?? 예를 들면 :

num > 5 ? doSomethingIfTrue(): ***pass*** 

나는 거짓을 반환하는 경우 프로그램이 단지에 수행 할 수 있도록 신속한에서 pass 문 같은 뭔가를 기대하고있다. 나는 continuefallthrough을 시도했지만 루프 문 안에서만 사용됩니다.

+1

사실은 그 것이 'if'문이 아닙니다. 그래서 당신의 질문은 이상하게 제목이 붙여지고 이상하게 제안됩니다. – matt

+0

삼항 연산자는 부작용으로 * 사용되지 않아야합니다. 유혹에 빠질 수도 있지만, 끔찍한 스타일이며 트랙 아래로 문제를 일으킬 것입니다. – sapi

답변

1

?: 조건부 연산자은 값을 다시 입력해야하므로 세 개의 피연산자 각각에 값이 있어야합니다. 당신이 말 가상

a = b + ((c > 0) ? 1 : pass) 

c 긍정적 아니었다면 당신은 +이 무엇을 기대? 를 들어

, 다음과 같이 if를 사용

if num > 5 { 
    doSomethingIfTrue() 
} 
0

왜 당신이 원 문에 다른 빈에 대한 삼항 연산자를 사용해야합니까? 훨씬 더 복잡하고 비효율적입니다.

var num = 10 

if num > 5 { 
    println("hi") 
} 

또는

var num = 10 

num > 5 ? doSomethingIfTrue(): pass() 

가 패스()를 만들고이를 아무것도하지 않고, 또는 우리가 아무것도하지 않았다 인쇄이보십시오.

5

당신은, 이론적으로,이 말할 수 : ()가 무효 문이기 때문에 작동

var num = 10 
num > 5 ? doSomethingIfTrue() :() 

합니다.

하지만 그렇게하지 않을 것입니다! 나는이 방법으로 이것을 쓸 것입니다.

var num = 10 
if num > 5 { doSomethingIfTrue() } 

예, 더 많은 문자가 있지만 스위프트입니다. if 구조에서 중괄호를 생략 할 수 없습니다. 그리고 삼항 연산자는 잘못된 연산자로 시작했습니다. 다른 사람이 지적했듯이, 그것은 조건부 할당 및 이와 유사한 것에 가장 적합합니다.

실제로는 언어의 구문, 연산자 및 흐름 제어에 적응해야합니다. Swift를 파이썬처럼 보이게하려고하지 마십시오. 그렇지 않을 것이다.

+0

places()는 작업을 올바르게 처리합니다. 한 줄 짜기를 쓰는 것이 최선의 방법이라면 스위프트에서 어떻게 할 수 있는지 궁금합니다. – sweekim

1

3 진수 연산자의 목적은 두 경우 모두에서 값으로 평가하는 것이기 때문에 아마도 가장 좋은 방법이라고 생각하는 다른 답변에 동의합니다. 실제로는 if 만 입력하면됩니다.

그러나 실제로 수행하려는 경우 doSomethingIfTrue()의 void 반환 유형을 ()으로 일치시킬 수 있습니다.

그러나 이것은 모든 가능성을 넘어 일반적이지 않습니다. doSomethingIfTrue()이 void를 반환하지 않고 대신 Int을 반환하면 작동하지 않습니다. 0 또는 그와 비슷한 것을 사용해야합니다.

이 (작품의 당신의 정의에 따라) 작동합니다 : 당신이 이제까지 이러한 식에 의해 반환 된 값을 사용하면

let pass: Any =() 

func doSomething() { } 
func doSomethingElse() -> String { return "a" } 
func doSomethingNumeric() -> Int { return 1 } 

var num = 5 
num > 5 ? doSomething() : pass 
num > 5 ? doSomethingElse() : pass 
num > 5 ? doSomethingNumeric() : pass 

, 그들은는 Any 수 있습니다.

사용하지 마십시오 :-)

+0

좋은 지적이며 기술적으로는 내 대답에 대한 좋은 수정입니다. – matt

+0

은 참된 표현을 위해 여러 유형에서 작동 할 수있는 끔찍한 아이디어로 업데이트되었습니다 ... –

관련 문제