博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

计划添加的复杂语法

Posted on 2013-10-27 20:24  xuld  阅读(349)  评论(0编辑  收藏  举报

区域字段

void substrig(params Range range) {}
// 以上函数可以这样调用:

//  最原始的调用方式。
substring(  new Range( 1, 5  )  ) 

// 通过命名参数调用。
substring(  start:1,  end: 5  ) 
substring(  start:1,  length: 4  ) 
substring(   length: 4, end:1  ) 
substring(  start:1  ) 
substring(  end:4  ) 

// 通过直接传参方式调用。
substring(  1,  4  ) // 即 substring(  start:1,  length: 4  ) 
substring(  1    )    // 即 substring(  start:1,  end: this.length  ) 

 

只读属性

class A{
   int _p;
   public int p {
      get{
         return _p;
      }
   }
}

以上代码简化为:

class A{
   public int p get;
}

(内部使用 p 来读写字段)

初始化值

class A{
    int _value;

    public int value {
        get {
            if(_value == 0){
                 _value = loadValue();
            }
            return _value;
        }
    }

}

以上代码简化为:

class A{
    public int value = once(loadValue());
}

子列表

class A{

    public class IntCollection {
        A _owner;
        List<int> _items;
   
        public IntCollection(A owner){
            _owner = owner;
        }

        public void add(int item){
             _owner.onAddItem(iterm);
             _items.add(item);
        }

    }

    IntCollection _items;
    
    public A() {
        _items = new IntCollection(this);
    }

    public IntCollection items {
        get {
            return _items;
        }
    }

    protected virtual void onAddItem(Int item){
         // 对子元素进行管理
    }

}

以上代码简化为:

class A{
    public List<int> items {
        add {
              // 对子元素进行管理。使用 value 代表子元素
        }
    }
}