groovy之範圍特性
ranges用..表示範圍操作符,用來指定左邊界和右邊界
ep: (0..10) -> 01234567890
..<操作符指定了半排除範圍,不包含右邊界
ep:(0..<10) -> 0123456789
range也可以通過顯示方法建立:
def a = new IntRange(0,10)
Range主要方法
range主要有如下方法:
1.contains:是否包含一個元素。
assert (0..10).contains(5) == true
assert(0..<10).contains(10) == false
2.size:集合大小
assert(0..<10).size() == 10
3.each迭代閉包
def str = ''
(9..5).each{element->
str+=element
}
println(str) -> "98765"
4. grep獲取指定範圍內的元素
assert [22,33,44,55,66].grep((21..50)) == [22,33,44]
5.在switch case語句中使用
age = 36
switch (age){
case 10..26:
rate =0.05;break
case 27..36:
rate = 0.06;break
case 37..46:
rate =0.07;break
default:
throw new IllegalArgumentException()
}
assert rate==0.06
Range實戰
range可以用於任何型別,date型別或者String型別,只要這個型別滿足以下兩個條件:
1.該型別實現next和previous方法,也就是說,重寫++和–操作符;
2.該型別實現java.lang.Comparable介面;也就是說實現compareTo方法, 實際上是重寫<=>操作符。
下面的例子中我們用類Weekday表示表示一週中的一天,一個Weekday有一個
值,這個值在‘sun’到‘sat’之間,本質上,它是0到6之間的一個索引,通過list的 下標來對應每個weekday的名稱。
class Weekday implements Comparable{
final static DAYS=['Sun','Mon','Tue','Wed','Thu','Fri','Sat']
private int index=0
Weekday(String day){
index = DAYS.indexOf(day)
}
Weekday previous(){
return new Weekday(DAYS[index-1]);
}
Weekday next(){
return new Weekday(DAYS[(index+1)%DAYS.size()]);
}
@Override
int compareTo(Object o) {
return this.index <=> o.index
}
String toString(){
return DAYS[index]
}
}
def Monday = new Weekday('Mon')
def Friday = new Weekday('Fri')
def str = ''
for (day in Monday..Friday){
str+= day.toString()+' '
}
println(str)
相關文章
- Postgres 9.2 新特性之:範圍型別 (Range Types)型別
- 專案管理軟體之範圍管理專案管理
- Javascript解析之this代表物件及作用範圍JavaScript物件
- 公司公司程式碼業務範圍成本控制範圍概念
- MySQL8.0之跳躍範圍掃描MySql
- C++之for迴圈、範圍for語句探究C++
- MongoDB之資料查詢(範圍運算)MongoDB
- 隨機範圍小數和隨機範圍整數隨機
- SAP SD基礎知識之信用控制範圍
- JavaScript 拖拽限定範圍JavaScript
- SciPy 應用範圍
- oracle hint有效範圍Oracle
- Windows Phone開發之輸入範圍InputScope的使用Windows
- 專案(Explore)總結之專案範圍管理
- SQL入門之8 限制插入資料的範圍SQL
- 【zz】論系統整合專案管理之範圍管理專案管理
- 門羅幣隱私保護之範圍證明
- 動態範圍控制原理
- 資料型別範圍資料型別
- MySQL 缺失範圍問題MySql
- MongoDB的適用範圍MongoDB
- JavaFX教程-範圍表示式Java
- int/double資料範圍
- 保護範圍和物件物件
- 檢視分割槽範圍
- Java入門系列之訪問修飾符作用範圍Java
- JavaScript 限定範圍的拖拽效果JavaScript
- JavaScript 限定範圍拖動效果JavaScript
- maven基礎:依賴範圍Maven
- Go IP 段範圍校驗Go
- PLM系統應用範圍
- IP地址分類及範圍
- MySQL欄位的取值範圍MySql
- Java包範圍可見性Java
- MySQL 間斷範圍問題MySql
- MySQL連續範圍問題MySql
- 各類IP地址的範圍
- 軟體專案範圍管理