我查了很多類似的帖子在StackOverflow上,但他們似乎並沒有接近我的問題,因爲我的lambda在協程中。什麼是從匿名函數返回值的內聯語法?
我的代碼:
public string FetchInternetItems()
{
WWW www = new WWW(someURL);
StartCoroutine(WaitForRequest(www, callback => {
if(!string.IsNullOrEmpty(callback))
{
Debug.Log("Successfully worked..");
}
else
{
return "Did not connect to remote server.";
}
}));
摘自WaitForRequest
:
IEnumerator WaitForRequest(WWW www, Action<string> callback)
{
yield return www;
if (string.IsNullOrEmpty(www.error))
{
if (callback != null)
{
callback(www.text);
}
}
else
{
Debug.Log("WWW Error: " + www.error);
}
}
協程類可以在這裏找到:https://docs.unity3d.com/ScriptReference/MonoBehaviour.StartCoroutine.html
返回錯誤:
Anonymous function converted to a void returning delegate cannot return a value
理想情況下,我希望它返回callback
,除非沒有通過,而是返回Did not connect to remote server.
消息。
聽起來像'WaitForRequest'的第二個參數是一個void委託,在這種情況下它不能返回值。你認爲它會迴歸他的價值? –
好的。這就說得通了。我期望一個'string'值。我很抱歉不包括該方法。 – Trip
我的問題是應該返回什麼值_receive_?代碼只是開始一個協同例程,所以沒有什麼可以收到回報的。另外,'Asction'會返回一個'字符串',但是你不能用它來代替'Action ' –