Я хотел бы обнаружить первую итерацию в al oop внутри функции изнутри тела l oop (т.е. без использования некоторой переменной счетчика, определенной вне l oop), и в
Здесь будет одно базовое c решение, просто для демонстрации идеи:
vect = c('x', 'y', 'z')
for (elem in vect) {
print(elem)
isfirst(elem, vect)
}
isfirst = function(ele, vec) {
if (ele == vec[1]) {
print('this is the first cycle!')
} else {
print('this is NOT the first cycle!')
}
}
«Проблема» в том, что я хочу, чтобы эта функция была легко повторно использовать в любом l oop: это означает, что ему не нужны аргументы l oop -specifi c, такие как elem
и vect
. То есть: другой l oop может использовать, например, for (my_item in my_list)
et c., И тогда аргументы isfirst
необходимо будет соответствующим образом изменить, например isfirst(my_item, my_list)
. Идеальным способом было бы просто иметь isfirst()
без каких-либо аргументов.
Я не уверен, возможно ли это вообще, но приветствую любые идеи.
(О том, почему я нужно это: я просто хотел бы предоставить пользователям функцию, которая ведет себя по-разному в зависимости от того, является ли итерация первой, и которую они могут гибко использовать в любом l oop, и не нужно делать даже эту небольшую настройку изменения аргументов.)