शामिल नहीं हो सकता है मान लें कि मेरे पास निम्न विधि है। कुछ मेंएक इटरेटर ब्लॉक से एक तत्व को लौटाना - इटरेटर में रिटर्न स्टेटमेंट
public IEnumerable<ValidationResult> Validate(UserLoginCommand command)
{
User user = userRepository.Get(u => u.Email == command.UserEmail);
if(user != null)
{
if(!user.Activated)
{
return new IEnumerable<ValidationResult>() {new ValidationResult("NotActived", Resources.UserNotActivated)};
}
if(user.IsPasswordIncorrent)
{
yield return new ValidationResult("IncorrectPassword", Resources.IncorrentPassword);
}
}
}
वास्तविक स्थिति वास्तव में थोड़ा अधिक जटिल है लेकिन मैंने चित्रण उद्देश्यों के लिए बहुत कुछ छोड़ दिया है।
बिंदु कुछ मामलों में है, मैं कई त्रुटियों का संग्रह करते रहना iterator करना चाहते हैं ... लेकिन अन्य मामलों में एक गंभीर त्रुटि है और मैं केवल एक ही त्रुटि वापस चाहते हैं, लेकिन यह मुझे नहीं दूँगी:
Iterator cannot contain return statement
मुझे क्या करना चाहिए?
मुझे लगता है कि त्रुटि संदेश बहुत स्पष्ट है। आप 'उपज' और 'वापसी' मिश्रण नहीं कर सकते हैं, क्योंकि फ़ंक्शन निष्पादन स्थगित होने तक स्थगित कर दिया जाता है। मैं सुझाव देता हूं कि 'उपज' से छुटकारा पाएं और बस अपनी खुद की गणना बनाएं। मुझे उम्मीद है कि जॉन स्कीट या एरिक लिपर्ट यहां पर चिल्लाएंगे कि क्यों संकलक इस मामले को संभाल नहीं सकता है। –