Как-то так должно достичь вашей цели:
function RecurseDirs
{
oldIFS=$IFS
IFS=\n'
for f in "$@"
do
-----your activity here-----
if [[ -d "${f}" ]]; then
cd "${f}"
RecurseDirs $(ls -1 ".")
cd ..
fi
done
IFS=$oldIFS
}
Не существует такого понятия, как абстрактное перечисление (которое может иметь разные реализации в подклассах), но универсальные типы могут быть вариантом:
class Base<T> where T : struct {
private T value;
public void Foo(T value) {
this.value = value;
}
}
class Parent1 : Base<Parent1.Enum1> {
public enum Enum1 {A, B, C};
}
class Parent2 : Base<Parent2.Enum2> {
public enum Enum2 { J, H, K };
}
Единственная проблема в том, что это не обеспечивает этого можно использовать только перечисления - вы можете сделать это во время выполнения - например, в инициализаторе типа:
static Base() {
if (!typeof(T).IsEnum) throw new InvalidOperationException(
typeof(T).Name + " is not an enum");
}
Вы должны иметь возможность объявить перечисление в базовом классе, а затем изменить значения для каждого производного класса, т.е.
class MyClass
{
public enum TestEnum { }
public MyClass()
{
}
}
class MyDerivedClass
{
public enum TestEnum { value1, value2, value3 }
public MyDerivedClass()
{
}
}
класс MyDervied будет иметь доступ к TestEnum.value1, TestEnum.value2, TestEnum. value3, где MyClass будет иметь доступ только к типу.
Однако лично я не вижу в этом преимущества, я бы объявил ВСЕ значения перечисления в базовом классе и использовал бы только те, которые мне нужны для каждого класс.
Джеймс.
Нет, это невозможно.
Обратите внимание, что многие перечисления часто указывают на проблему с дизайном (например, многие конструкции переключателей). Проверьте эту ссылку, чтобы увидеть пример того, как выполнить рефакторинг: Замените условное выражение полиморфизмом .
Нет, нет способа принудительно применить что-то статичное в интерфейсе.
Возможно, вам нужно переосмыслить свой дизайн.
Почему вы не можете определить перечисление в базовом классе:
class Base
{
public enum Test {A, B, C, J, H, K};
}
И использовать только соответствующие члены enum в производных классах?