mirror of
https://github.com/sharkdp/bat
synced 2024-12-26 20:23:06 +00:00
78 lines
1.6 KiB
Groovy
78 lines
1.6 KiB
Groovy
|
interface Display {
|
||
|
String asText()
|
||
|
}
|
||
|
|
||
|
trait Entity {
|
||
|
Integer id
|
||
|
}
|
||
|
|
||
|
class Product implements Entity, Display {
|
||
|
public String name
|
||
|
public Boolean available
|
||
|
public Float price
|
||
|
|
||
|
private String key
|
||
|
protected String data
|
||
|
|
||
|
/**
|
||
|
* Creates a new product instance.
|
||
|
* @param id Product ID.
|
||
|
* @param name Product name.
|
||
|
* @param available Product availability.
|
||
|
* @param price Product price.
|
||
|
* @param key Product key.
|
||
|
* @param data Product internal data.
|
||
|
*/
|
||
|
Product(id, name, available, price, key = "key", data = "internal") {
|
||
|
this.id = id
|
||
|
this.name = name
|
||
|
this.available = available
|
||
|
this.price = price
|
||
|
this.key = key
|
||
|
this.data = data
|
||
|
}
|
||
|
|
||
|
/**@
|
||
|
* Returns product data as text.
|
||
|
* @return Data string.
|
||
|
*/
|
||
|
String asText() {
|
||
|
return """ID [${id}] Name [${name}] Available [${available}] Price [${price}]"""
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/* Creates a new product instance */
|
||
|
def product = new Product(1, "T-Shirt", true, 15.00)
|
||
|
|
||
|
println(product.asText())
|
||
|
|
||
|
product.available = false
|
||
|
product.price = 0.0
|
||
|
|
||
|
// Check values
|
||
|
assert product.asText() == "ID [1] Name [T-Shirt] Available [false] Price [0.0]"
|
||
|
|
||
|
def factorial(Integer value) {
|
||
|
if (value <= 1) {
|
||
|
return 1
|
||
|
} else {
|
||
|
return value * factorial(value - 1)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
assert factorial(5) == 120
|
||
|
|
||
|
static String join(List<String> list, String separator) {
|
||
|
String data = ""
|
||
|
|
||
|
list.each { item ->
|
||
|
data += item + separator
|
||
|
}
|
||
|
|
||
|
data = data.substring(0, data.length() - 1)
|
||
|
|
||
|
return data
|
||
|
}
|
||
|
|
||
|
assert join(["g", "r", "o", "o", "v", "y"], " ") == "g r o o v y"
|