https://mp.weixin.qq.com/s/Sf0owQxWzxacVvykJZ5oTQ
 
介绍TransferSizes的实现。
 
 
1. 基本定义
 
从min到max的闭合区间:[min, max]
 
判断条件:
a. min和max为2的幂;
b. min <= max;
c. min和max为非负整数;
d. min和max必须同时为0;
 
 
2. none
 
因为min和max必须同时为0,所以只需要判断min是否为0即可:
 
3. contains
 
判断this是否包含x,即x落在this的范围内:
 
4. containsLg
 
判断this是否包含2^x。
 
5. intersect
 
计算this和x的交集。
 
6. 伴生对象
 
a. 构造方法:min = max = x;
b. none对象:min = max = 0;
c. asBool:x是否为空;
 
7. 附录
 
TransferSizes:
// An potentially empty inclusive range of 2-powers [min, max] (in bytes)
TransferSizes(min: Int, max: Int)
{
(x, x)
 
)
)
)
)
)
 
0
(x) && min <= x && x <= max
<< x)
) =
)
(min)) === x }
(max)) }
 
contains(x: TransferSizes) = x.none || (min <= x.min && x.max <= max)
 
intersect(x: TransferSizes) =
none
(max, x.max))
 
.format(min, max)
 
}
 
TransferSizes {
TransferSizes(x)
)
 
asBool(x: TransferSizes) = !x.none
}
 

相关文章: