В рубине я видел следующее.
10.times {
# do this block 10 times
}
При этом (насколько я знаю, что не очень похоже на рубин), нет итератора цикла. В языках на языке C самая близкая реплика, которую я могу придумать, - это простой цикл.
for (int i = 0; i < 10; i++) {
// do this block 10 times
}
Но это использует итератор цикла, i
Есть ли какой-либо способ на языках C (включая те, которые указаны в тегах) для выполнения блока кода несколько раз без использования итератора?
Например: Если бы я хотел выполнить блок определенное количество раз, но мне все равно, какая итерация включена.
Нет, это невозможно. i
существует, потому что вам нужно отслеживать, сколько итераций вы выполнили. Даже Руби должен делать это под капотом, иначе как он узнает, сколько итераций было выполнено?
На самом деле это разница в синтаксисе. Ruby скрывает его от вас, где в качестве производных C нет.
В Ruby все типы (включая целые) являются, по существу, сложными типами, в то время как на других языках распространено множество целых чисел простых простых примитивных типов. В С#, например, насколько я не думаю, что когда-либо захочу это сделать, но если цель состоит в том, чтобы имитировать синтаксис Ruby, тогда...
Определить метод расширения для int
public static class Helpers
{
public static void Times(this int value, Action action)
{
for (int i = 0; i < value; i++)
{
action.Invoke();
}
}
}
Сделай что-нибудь...
10.Times(() => { ... });