2016-06-12 3 views
2

함수를 실행하고 반환 값을 함수의 매개 변수로 가져 오는 방법이 있습니까? 내가 설명해 주겠다 : 나는 무언가가 일어나기 전에 일정한 시간 (초)을 대기하기 위해 존재하는 많은 함수가있다. 한 가지 상황에서만 그것들을 사용하기 때문에, 어떻게 든 그것들을 사용하는 나의 방법 안에 넣고 싶었습니다. (내가 Unity3D를 사용하고 있습니다.) 예 : 내가 SayHiAfterSeconds의 내부 sayHiCoroutine 기능을 넣을메소드 내부에서 함수를 실행할 수 있습니까?

public void SayHiAfterSeconds(float seconds) { 
    StartCoroutine(sayHiAfterSeconds(seconds)); 
} 
IEnumerator sayHiCoroutine(float seconds) { 
    yield return new WaitForSeconds(seconds); 
    print("Hi."); 
} 

. 다음과 같이 입력하십시오 :

public void SayHiAfterSeconds(float seconds) { 
    StartCoroutine(IEnumerator() { 
     yield return new WaitForSeconds(seconds); 
     print("Hi."); 
    }); 
} 

가능합니까? 감사합니다. .

+0

@Valentin은 단지 기록 용이며, 복제본이 아닙니다. ** coroutines ** – Fattie

+0

안녕하세요. @ 283입니다. 당신 말이 맞습니다. 당신은 Unity에 대해 우스꽝스럽게 우연히 만났습니다. 당신은 종종 coroutine을 시작하는 것 이외의 다른 기능을 볼 수 있습니다. ** 많은 팀에서 이렇게하는 것이 매우 일반적입니다. ** 주요 호출은 ** SayHiAfter **입니다. 일치하는 코 루틴 **은 밑줄과 작은 글자와 동일하므로 ** "_ sayHiAfter"**. 나는 당신에게 그렇게해야한다고 거의 말할 것입니다. ** Unity Unity 엔지니어들 사이에서는 일반적인 숙어입니다 **. – Fattie

+0

매우 명확하게 다음과 같이 유의하십시오 : ** 정상적으로, 절대, 언제나, 이제까지, 이름을 시작하기 위해 밑줄을 사용했습니다 - 과거에는 사태가 달라졌을 때 정말 믿을 수 없을만큼 시대에 뒤 떨어지고, 어리석은, 나쁜 아이디어입니다. ** 그래서 평범하게 결코 Unity에서 "밑줄 시작 이름"아이디어를 결코 사용하지 마십시오. 그러나 이것은 매우 예외적 인 상황입니다. 내가 말할 수있는 것은 이것이이 경우에 적절하다고 느껴진다는 것입니다 ("부수적 인" "부수적 인" "연관성이있는"것을 나타냄) 그리고 그것은 매우 일반적이라는 것을 느낍니다. 그래서, 그렇게하는 것이 좋습니다. – Fattie

답변

1

짧은 답변 : 아니오.

couroutine 기능을 다른 기능에 넣을 수는 없지만 다른 기능에서 호출 할 수는 있습니다. 이 질문은 before입니다.

+0

좋아, 고마워. 코 루틴 기능을 명명하는 좋은 방법이 있습니까? – 283

+0

@ 283 나를 위해 직접 부르는 것이 싫다. 다른 함수에서 호출합니다. 예를 들어,'sayHiCoroutine' 동시 루틴 함수의 이름은'SayHiAfterSecondsCRT'이어야하며 호출하는 함수는'SayHiAfterSeconds' 여야합니다. 그런 식으로 'CRT'는 coroutine이고 'CRT'가없는'SayHiAfterSeconds'는'CRT '로 끝나는 것이 아니라 전화를 걸 수있는 기능이라는 것을 알려줍니다. coroutine 기능의 끝 부분에있는 CRT를 제외하고 이름은 항상 동일해야합니다. 그렇게하면 어떤 함수가 어떤 함수를 호출하는지에 대한 혼란이 줄어 듭니다. – Programmer

+0

감사. 내 coroutine 함수의 이름을 지정하는 방법을 모르기 때문에 내 코드가 매우 복잡해지고 있다고 느꼈다. – 283

관련 문제