Есть ли какой-нибудь способ эффективно заполнить массив каким-либо значением, что-то наподобии std::fill? Сейчас приходится городить for(mutable i=...) a[i]=-1.
Здравствуйте, Аноним, Вы писали:
А>Есть ли какой-нибудь способ эффективно заполнить массив каким-либо значением, что-то наподобии std::fill? Сейчас приходится городить for(mutable i=...) a[i]=-1.
Не помню чтобы вообще такая утилита была в .NET.
public Fill[T](a : array[T], x : T) : void
{
for(mutable i = 0; i < a.Length; ++i) a[i] = x;
}
Здравствуйте, hardcase, Вы писали:
H>Здравствуйте, Аноним, Вы писали:
А>>Есть ли какой-нибудь способ эффективно заполнить массив каким-либо значением, что-то наподобии std::fill? Сейчас приходится городить for(mutable i=...) a[i]=-1.
H>Не помню чтобы вообще такая утилита была в .NET.
H>H>public Fill[T](a : array[T], x : T) : void
H>{
H> for(mutable i = 0; i < a.Length; ++i) a[i] = x;
H>}
H>
Можно даже чуточку лучше:
module ArrayExtensions
{
public FillWith[T](this a : array[T], x : T) : void
{
for(mutable i = 0; i < a.Length; ++i) a[i] = x;
}
}
Использование:
def a = array(10);
a.FillWith(-1);
Здравствуйте, hardcase, Вы писали:
H>Здравствуйте, Аноним, Вы писали:
А>>Есть ли какой-нибудь способ эффективно заполнить массив каким-либо значением, что-то наподобии std::fill? Сейчас приходится городить for(mutable i=...) a[i]=-1.
H>Не помню чтобы вообще такая утилита была в .NET.
H>H>public Fill[T](a : array[T], x : T) : void
H>{
H> for(mutable i = 0; i < a.Length; ++i) a[i] = x;
H>}
H>
Тогда уж лучше сделать так:
public Generate[T](a : array[T], x : int->T) : void
{
for(mutable i = 0; i < a.Length; ++i) a[i] = x();
}
public Fill[T](a : array[T], x : T) : void
{
Generate.[T](a, _=>x);
}
Здравствуйте, Аноним, Вы писали:
А>Тогда уж лучше сделать так:
А>А>public Generate[T](a : array[T], x : int->T) : void
А>{
А> for(mutable i = 0; i < a.Length; ++i) a[i] = x();
А>}
А>public Fill[T](a : array[T], x : T) : void
А>{
А> Generate.[T](a, _=>x);
А>}
А>
Зависит от того, что вам нужно. Мне утилита сия не особо нужна, так как с массивами практически не работаю — не удобные они.
selfix
А>А>public Generate[T](a : array[T], x : int->T) : void
А>{
А> for(mutable i = 0; i < a.Length; ++i) a[i] = x(i);
А>}
А>public Fill[T](a : array[T], x : T) : void
А>{
А> Generate.[T](a, _=>x);
А>}
А>