Grails 第一课
package helloworld import org.junit.*;
import java.util.*; class HelloController { def index() {
//def grailsVersion = grailsApplication.metadata['app.grails.version'];
//render "Hello World!"+grailsVersion;
//render grailsVersion;
//def mySet = false;
//def mySet = Boolean.FALSE;
//if(mySet){
//render "true";
//}else{
//render "false";
//}
//String str = null;
//assert str_ = = null;
//render "Hello world it is"+new java.util.Date() + grailsVersion;
//String str = null;
//assert str1 == null; //Groovy基本语法
//int i = 123 + 45 *67;
//render i+"<BR>";
//def x = new java.util.Date();
//render x; //不能直接跟字符串,可能是数据类型问题
//render "<BR>";
//Boolean y = false;
//render y+"<BR>"; //List和Maps
//List myList = [1776, -1, 33, 99, 0, 928734928763]; //Groovy语法简介 //1 没有类型的java
//仅仅要求变量名前使用关键字def(groovy jsr 1开始,在以前的版本中,甚至连def都不需要)
def var = "hello world";
render var+"<BR>";
render var.class; //查看变量的类型
//对象输出后面不能跟+号字符链接符号
//作为例外,方法参数和循环变量的声明不需要def
//2 不需要的public
//3 不需要的语句结束符
//4 字符串链接符
def var2 = "hello world groovy!";
render "<BR>"+var2+"<BR>";
//5 一切皆有对象
def var3 = "hello "+
"world"+
", groovy!";
render var3+"<BR>";
render var3.class;
render "<BR>";
var3 = 1001;
render "<BR>重新赋值后的类型:";
render var3.class;
//6 循环
//def var4 = "hello "+ "world "+", groovy!";
//def repeat(val){
//for(i=0; i<5; i++){
//render val+"<BR>";
//}
//}
//repeat(var4);
//这样直接循环错误哦 //7 String和Gstring
def i=22;
def val4="xlc";
//render "this is ${$val4}:${i}"; 不支持了
render "<BR>this is "+val4+":"+i+"<BR>"; //8 范围
def j=22;
for (jj in 0..<5){
render jj;
}
//render "<BR><BR>";
//不成功
//for(jjj in a..<e){
//render jjj;
//}
//9 默认参数值
/*def repet(val, repeat=3){
for(i in 0..<repeat){
render "this is ....";
}
}*/
//这个例子肯定运行不了
//10 集合
//Groovy支持最常见的两个java集合,java.util.Collection和java.util.Map
//前面所说的范围实际也是集合的一种java.util.List
//(1)Collection
//添加
def collect = ["a","b","c"];
collect.add(1);
collect<<"come on";
collect[collect.size()]=100.0;
//输出
render collect[0]+"<BR>";
render collect[collect.size()-1]+"<BR>";
render collect.size();
for(i=0; i<collect.size(); i++){
render i+":"+collect[i]+"<BR>";
}
//groovy支持负索引
render "-1:"+collect[-1]+"<BR>"; //索引其倒数第1个元素
render "-2:"+collect[-2]+"<BR>"; //索引其倒数第2个元素 //collection支持集合运算
collect = collect + 5;
render collect[collect.size()-1]+"<BR>";
collect = collect-'a';
render collect[0]; //同样的,你可以往集合中添加另一个集合或删除一个集合
collect = collect-collect[0..4]; //把集合的前5个元素去掉
render collect[0]+"<BR>"; //现在集合中仅有一个元素,即原来的最后一个元素
render collect[-1]+"<BR>"; //也可以用负索引,证明最后一个元素就是第一个元素
}
}
地址: http://blog.csdn.net/kmyhy/article/details/4200563
Grails 第一课的更多相关文章
- vue.js学习(第一课)
学习资料 来自台湾小凡! vue.js是javascript的一个库,只专注于UI层面,核心价值永远是 API的简洁. 第一课: 不支持IE8. 1.声明式渲染: el元素的简称 element : ...
- Magento学习第一课——目录结构介绍
Magento学习第一课--目录结构介绍 一.Magento为何强大 Magento是在Zend框架基础上建立起来的,这点保证了代码的安全性及稳定性.选择Zend的原因有很多,但是最基本的是因为zen ...
- <-0基础学python.第一课->
初衷:我电脑里面的歌曲很久没换了,我想听一下新的歌曲,把他们下载下来听,比如某个榜单的,但是一首一首的点击下载另存为真的很恶心 所以我想有没有办法通过程序的方式来实现,结果还真的有,而且网上已经有有人 ...
- 留念 C语言第一课简单的计算器制作
留念 C语言第一课简单的计算器制作 学C语言这么久了. /* 留念 C语言第一课简单的计算器制作 */ #include<stdio.h> #include<stdlib.h ...
- MFC学习-第一课 MFC运行机制
最近由于兴趣爱好,学习了孙鑫的MFC教程的第一课.看完视频了,自己便用visual studio 2010尝试了MFC编程,其中遇到了一些问题. 1.vs2010不像vs6.0那样可以新建一个空的MF ...
- OpenCV 第一课(安装与配置)
OpenCV 第一课(安装与配置) win10,opencv-2.4.13, 安装, vs2013, 配置 下载安装软件 官网OpenCV下载地址下载最新版本,我下载的是opencv.2.4.13,然 ...
- 【第一课】神奇的Context
初学Android的困惑 初学Android跳转页面的时候,往往教程里是这么写的: Intent intent = new Intent(); //MyActivity就是当前的Activity,It ...
- CodeIgniter框架入门教程——第一课 Hello World!
本文转载自:http://www.softeng.cn/?p=45 今天开始,我将在这里连载由我自己编写的<CodeIgniter框架入门教程>,首先,这篇教程的读着应该是有PHP基础的编 ...
- ruby代码重构第一课
(文章是从我的个人主页上粘贴过来的, 大家也可以访问我的主页 www.iwangzheng.com) 新手写代码的时候往往会出现很多重复的代码没有提取出来,大师高瞻远瞩总能提点很多有意义的改进,今天重 ...
随机推荐
- linux下如何使用gdb调试
gdb是linux下非常好用的一个调试工具,虽然它是命令行模式的调试工具,但是它的功能强大到你无法想象,这里简单介绍下gdb下常用的命令. 首先编译生成可执行文件(这里的test.c是一个简单的求前n ...
- LINQ学习之旅(二)
一:查询表达式(LINQ)简介 LINQ是Language Integrated Query的简称,它是集成在.NET编程语言中的一种特性.已成为编程语言的一个组成部分,在编写程序时可以得到很好的编译 ...
- python全栈开发day39-CSS继承性和层叠性、权重问题、盒模型和其属性、文本级标签和块级标签、浮动
一.上次内容回顾 1.CSS的三种引入方式: 行内式 内接式 外接式 链接式 导入式 2.基础选择器和高级选择器 1)标签选择器 p{} 2) id选择器 #nva{} 3) 类选择器 .nva{} ...
- (转)java面试总结-(hibernate ibatis struts2 spring)
说说Hibernate对象的三种状态 Hibernate对象有三种状态,分别是:临时态(Transient). 持久态(Persistent).游离态(Detached). 临时状态:是指从对象通过n ...
- SQLite中的SELECT子句
SQLite中的SELECT子句 目前为止,最常见的SELECT语句由三个子句组成,分别为SELECT.FROM与WHERE.本小节我们首先讲解SELECT子句.SELECT子句可以用来定义最终结果表 ...
- 网页图表Highcharts实践教程之外层图表区
网页图表Highcharts实践教程之外层图表区 Highcharts图表区 图表区是图表的基本区域.所有的数据和图形都是绘制在图表区中.从图形绘制范围来分,图表区域分为外层图表区和绘图区.本章将详细 ...
- Cordova项目config.xml添加android权限
最近在开发cordova项目,安卓APP需要调用照相机和系统相册,在添加安卓权限的时候,总是报错. 以下是部分config.xml代码 <platform name="android& ...
- BZOJ.3667.Rabin-Miller算法(MillerRabin PollardRho)
题目链接 Pollard_Rho:http://blog.csdn.net/thy_asdf/article/details/51347390 #include<cstdio> #incl ...
- BZOJ.4530.[BJOI2014]大融合(LCT)
题目链接 BZOJ 洛谷 详见这 很明显题目是要求去掉一条边后两边子树sz[]的乘积. LCT维护的是链的信息,那么子树呢? 我们用s_i[x]来记录轻边连向x的子树的和(记作虚儿子),那么sum[x ...
- mysql GRANT ALL PRIVILEGES 限制某个或所有客户端都可以连接至mysql
GRANT ALL PRIVILEGES 1. 改表法.可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "mys ...