区域字段
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 代表子元素 } } }