Language BeanShell
| Date: | 06/18/05 |
| Author: | Tom Edelson |
| URL: | http://www.well.com/user/edelsont/ |
| Comments: | 2 |
| Info: | http://www.beanshell.org/ |
| Score: |
// 99bottles.bsh
//
// Tom Edelson, last modified 2005-06-18
// This is BeanShell, a scripting language based on, and implemented in,
// Java.
//
// Mostly, the BeanShell language just is Java; but type declarations
// on variables are optional, and some scripting-friendly features
// have been added. One of these features is the ability of a method
// to return a "closure", which is a bundle of [persistent] data and
// code; thus, like an object, but not derived from a class.
//
// In this example, each of the methods "newWall" and "newSinger" creates and
// returns a closure, whose content is defined by statements,
// and nested method definitions, within the "constructor" itself.
// For more information on BeanShell, and to download it, visit
//
// http://www.beanshell.org/
formatBottleCount (number) {
if (number == 0) {
return "No bottles ";
}
if (number == 1) {
return "One bottle ";
}
return number + " bottles ";
} // end method formatBottleCount
newWall (initialCount) {
count = initialCount;
getCount () {
return count;
}
hasBottles () {
return count > 0;
}
takeOne () {
count--;
return count;
}
return this;
} // end method newWall
newSinger (wallRef) {
wall = wallRef;
count = wall.getCount();
countString = formatBottleCount (count);
print ("");
singVerse () {
print (countString + "of beer on the wall,");
print (countString + "of beer;");
count = wall.takeOne();
print ("Take one down, pass it around,");
countString = formatBottleCount (count);
print (countString + "of beer on the wall.");
print ("");
} // end method singVerse
finish () {
print ("Gotta be another beer wall around here somewhere ...");
print ("");
}
return this;
} // end method newSinger
// Main program code:
wall = newWall (99);
singer = newSinger (wall);
while (wall.hasBottles()) {
singer.singVerse();
}
singer.finish();
// end of file "99bottles.bsh".
Download Source | Write Comment
Download Source | Write Comment
Add Comment
Please provide a value for the fields Name,
Comment and Security Code.
This is a gravatar-friendly website.
E-mail addresses will never be shown.
Enter your e-mail address to use your gravatar.
Please don't post large portions of code here! Use the form to submit new examples or updates instead!
Comments
<a href="http://www.efashionblog.org">fashion blog</a>
<a href="http://www.lifeofworld.com">life world</a>
<a href="http://www.choosehandbag.com">choose handbag</a>
<a href="http://www.tiffanyking.com">Tiffany Jewellery</a>
<a href="http://www.infashionlife.com">fashion life</a>
<a href="http://manoloblahniksale.com">manoloblahnik sale</a>
<a href="http://www.xmasgiftsale.com/gift/" >xmas gift</a>
<a href="http://www.ckloo.com">Ckloo</a>
<a href="http://www.tiffanyworld.org"> jewellery</a>
<a href="http://www.buydress.org/">dresses </a>
<a href="http://www.ishoesblog.com/">shoes blog</a>
<a href="http://www.tiffanyfree.org/">jewellery</a>
<a href="http://www.edhardyfor.com/">ed hardy blog </a>
<a href="http://ourweddingsales.com">wedding sale</a>