많은 템플릿 엔진은 foreach
과 else
의 조합 인 특별한 종류의 구문을 사용합니다. 기본적으로 else
절은 foreach
루프에 반복이 없을 때 실행됩니다. 어떤 종류의 을 표시하려는 경우 유용 할 수 있습니다. 대체 목록에 항목이 없습니다.면도기에서 우아한 foreach - else 구조
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;
}
}
이것은 당신이 개 통화를 서로이 라이브 예에 의해 demonstarted로에 체인 수 있습니다 : 나는 이런 식으로 뭔가를 달성하기 위해 생각할 수있는
쉼표는 거의 보이지 않습니다. : P –
나는 동의한다. 그러나 우리가 그것을 우회 할 수있는 실제 방법이 없다. 그렇지 않습니까? :) – Thomas
else 절에 명명 된 매개 변수를 사용하면 더 읽기 쉽고 선택 사항으로 만들 수 있습니다. –