में निर्माण बहुत सारे टेम्पलेटिंग इंजनों में एक विशेष प्रकार का वाक्यविन्यास होता है जो foreach
और else
का संयोजन होता है। मूल रूप से else
खंड निष्पादित किया जाता है जब foreach
लूप में कोई पुनरावृत्ति नहीं होती है। यह उपयोगी हो सकता है यदि आप किसी प्रकार का सूची फ़ॉलबैक में कोई आइटम प्रदर्शित नहीं करना चाहते हैं।सुरुचिपूर्ण foreach - अन्यथा रेजर
Twig में उदाहरण के लिए, for
loop इस
{% for user in users %}
<li>{{ user.username|e }}</li>
{% else %}
<li><em>no user found</em></li>
{% endfor %}
उस्तरा दृश्य इंजन का उपयोग की तरह लग सकता है, टेम्पलेट इस तरह चाहते हैं, संग्रह में आइटम की संख्या के लिए एक अतिरिक्त जांच से जुड़े:
@foreach (var user in users) {
<li>@user.UserName</li>
}
@if (!users.Any()) {
<li><em>no user found</em></li>
}
तो मेरे प्रश्न यह है: क्या हम रेजर व्यू इंजन का उपयोग करके किसी तरह का लालित्य प्राप्त कर सकते हैं।
public static class IEnumerableExtensions
{
public static IEnumerable<T> ForEach<T>(this IEnumerable<T> enumerable, Action<T> action)
{
foreach(T item in enumerable)
action(item);
return enumerable;
}
public static IEnumerable<T> WhenEmpty<T>(this IEnumerable<T> enumerable, Action action)
{
if(!enumerable.Any())
action();
return enumerable;
}
}
2 कॉल पर एक दूसरे को इस लाइव उदाहरण के द्वारा demonstarted के रूप में श्रृंखला में सक्षम बनाता है:
अल्पविराम अदृश्य है। : पी –
मैं सहमत हूं, लेकिन कोई वास्तविक तरीका नहीं है जिसे हम इसे रोक सकते हैं, क्या हम कर सकते हैं? :) – Thomas
यदि आप किसी अन्य खंड के लिए नामित पैरामीटर का उपयोग करते हैं तो यह शायद और भी पठनीय है और आप इसे वैकल्पिक –