arity() публичный абстрактный Метод

public abstract arity ( ) : long
Результат long
Пример #1
0
        public void eachRange(Range r, Func f)
        {
            int s = r.start(m_size);
            int e = r.end(m_size);
            int n = e - s + 1;

            if (n < 0)
            {
                throw IndexErr.make(r).val;
            }

            if (f.arity() == 1)
            {
                for (int i = s; i <= e; ++i)
                {
                    f.call(m_values[i]);
                }
            }
            else
            {
                for (int i = s; i <= e; ++i)
                {
                    f.call(m_values[i], i);
                }
            }
        }
Пример #2
0
        public long binaryFind(Func f)
        {
            object[] values = this.m_values;
            int      low = 0, high = m_size - 1;
            bool     oneArg = f.arity() == 1;

            while (low <= high)
            {
                int    probe = (low + high) >> 1;
                object val   = values[probe];
                object res   = oneArg ? f.call(val) : f.call(val, Long.valueOf(probe));
                long   cmp   = ((Long)res).longValue();
                if (cmp > 0)
                {
                    low = probe + 1;
                }
                else if (cmp < 0)
                {
                    high = probe - 1;
                }
                else
                {
                    return(probe);
                }
            }
            return(-(low + 1));
        }
Пример #3
0
 public void eachr(Func f)
 {
     if (f.arity() == 1)
     {
         for (int i = m_size - 1; i >= 0; i--)
         {
             f.call(m_values[i]);
         }
     }
     else
     {
         for (int i = m_size - 1; i >= 0; i--)
         {
             f.call(m_values[i], i);
         }
     }
 }
Пример #4
0
        //////////////////////////////////////////////////////////////////////////
        // Iterators
        //////////////////////////////////////////////////////////////////////////

        public void each(Func f)
        {
            if (f.arity() == 1)
            {
                for (int i = 0; i < m_size; i++)
                {
                    f.call(m_values[i]);
                }
            }
            else
            {
                for (int i = 0; i < m_size; i++)
                {
                    f.call(m_values[i], i);
                }
            }
        }
Пример #5
0
Файл: List.cs Проект: xored/f4
        public void eachRange(Range r, Func f)
        {
            int s = r.start(m_size);
              int e = r.end(m_size);
              int n = e - s + 1;
              if (n < 0) throw IndexErr.make(r).val;

              if (f.arity() == 1)
              {
            for (int i=s; i<=e; ++i)
              f.call(m_values[i]);
              }
              else
              {
            for (int i=s; i<=e; ++i)
              f.call(m_values[i], i);
              }
        }
Пример #6
0
Файл: List.cs Проект: xored/f4
 public void eachr(Func f)
 {
     if (f.arity() == 1)
       {
     for (int i=m_size-1; i>=0; i--)
       f.call(m_values[i]);
       }
       else
       {
     for (int i=m_size-1; i>=0; i--)
       f.call(m_values[i], i);
       }
 }
Пример #7
0
Файл: List.cs Проект: xored/f4
 //////////////////////////////////////////////////////////////////////////
 // Iterators
 //////////////////////////////////////////////////////////////////////////
 public void each(Func f)
 {
     if (f.arity() == 1)
       {
     for (int i=0; i<m_size; i++)
       f.call(m_values[i]);
       }
       else
       {
     for (int i=0; i<m_size; i++)
       f.call(m_values[i], i);
       }
 }
Пример #8
0
Файл: List.cs Проект: xored/f4
 public long binaryFind(Func f)
 {
     object[] values = this.m_values;
       int low = 0, high = m_size-1;
       bool oneArg = f.arity() == 1;
       while (low <= high)
       {
     int probe = (low + high) >> 1;
     object val = values[probe];
     object res = oneArg ? f.call(val) : f.call(val, Long.valueOf(probe));
     long cmp = ((Long)res).longValue();
     if (cmp > 0)
       low = probe + 1;
     else if (cmp < 0)
       high = probe - 1;
     else
       return probe;
       }
       return -(low + 1);
 }