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 第一课的更多相关文章

  1. vue.js学习(第一课)

    学习资料 来自台湾小凡! vue.js是javascript的一个库,只专注于UI层面,核心价值永远是 API的简洁. 第一课: 不支持IE8. 1.声明式渲染: el元素的简称 element : ...

  2. Magento学习第一课——目录结构介绍

    Magento学习第一课--目录结构介绍 一.Magento为何强大 Magento是在Zend框架基础上建立起来的,这点保证了代码的安全性及稳定性.选择Zend的原因有很多,但是最基本的是因为zen ...

  3. <-0基础学python.第一课->

    初衷:我电脑里面的歌曲很久没换了,我想听一下新的歌曲,把他们下载下来听,比如某个榜单的,但是一首一首的点击下载另存为真的很恶心 所以我想有没有办法通过程序的方式来实现,结果还真的有,而且网上已经有有人 ...

  4. 留念 C语言第一课简单的计算器制作

    留念 C语言第一课简单的计算器制作 学C语言这么久了.  /* 留念 C语言第一课简单的计算器制作 */   #include<stdio.h>  #include<stdlib.h ...

  5. MFC学习-第一课 MFC运行机制

    最近由于兴趣爱好,学习了孙鑫的MFC教程的第一课.看完视频了,自己便用visual studio 2010尝试了MFC编程,其中遇到了一些问题. 1.vs2010不像vs6.0那样可以新建一个空的MF ...

  6. OpenCV 第一课(安装与配置)

    OpenCV 第一课(安装与配置) win10,opencv-2.4.13, 安装, vs2013, 配置 下载安装软件 官网OpenCV下载地址下载最新版本,我下载的是opencv.2.4.13,然 ...

  7. 【第一课】神奇的Context

    初学Android的困惑 初学Android跳转页面的时候,往往教程里是这么写的: Intent intent = new Intent(); //MyActivity就是当前的Activity,It ...

  8. CodeIgniter框架入门教程——第一课 Hello World!

    本文转载自:http://www.softeng.cn/?p=45 今天开始,我将在这里连载由我自己编写的<CodeIgniter框架入门教程>,首先,这篇教程的读着应该是有PHP基础的编 ...

  9. ruby代码重构第一课

    (文章是从我的个人主页上粘贴过来的, 大家也可以访问我的主页 www.iwangzheng.com) 新手写代码的时候往往会出现很多重复的代码没有提取出来,大师高瞻远瞩总能提点很多有意义的改进,今天重 ...

随机推荐

  1. Mac下Eclipse读取不到环境变量

    问题: 用Eclipse时候读取不到 ~/.bash_profile 下定义的环境变量,确切的说,是GUI应用读取不到终端的(如eclipse) 解决: 1,下载启动代理器: curl https:/ ...

  2. thinkphp中AJAX返回ajaxReturn()方法分析

    本文分析了thinkphp中AJAX返回ajaxReturn()方法.分享给大家供大家参考,具体如下: 系统支持任何的AJAX类库,Action类提供了ajaxReturn方法用于AJAX调用后返回数 ...

  3. BZOJ5090 组题 BZOJ2017年11月月赛 二分答案 单调队列

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ5090 11月月赛A题 题意概括 给出n个数. 求连续区间(长度大于等于k)最大平均值. 题解 这题 ...

  4. 【Java】 剑指offer(57-1) 和为s的两个数字

      本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它 ...

  5. Sea Battle CodeForces - 729D

    题意: 有n个格子,a条船,每条船占b个格子.事先已经射击了k个格子,且这k次射击不会射到船上,求再射击几次可以射到某一条船的某一部分 思路: 观察样例可以发现,如果五个0,船的长度是3,那么这五个0 ...

  6. DP-hdu1260

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1260 题目描述: 题目大意:每一个人去电影票买票,有两种买票方法:1.自己单人买:2.与前面的人一起买 ...

  7. js格式化显示文件大小(bytes 转 KB、、、)

    //格式化文件大小 function renderSize(value){ if(null==value||value==''){ return "0 Bytes"; } var ...

  8. Codeforces.914D.Bash and a Tough Math Puzzle(线段树)

    题目链接 \(Description\) 给定一个序列,两种操作:一是修改一个点的值:二是给一个区间\([l,r]\),问能否只修改一个数使得区间gcd为\(x\). \(Solution\) 想到能 ...

  9. [__NSArrayM insertObject:atIndex:]: object cannot be nil'

    错误描述:如下图 分析原因: 1.插入的对象为空了 2.[__NSSetM addObject:] object cannot be nil [__NSArrayM insertObject:atIn ...

  10. zookeeper leader选举机制

    最近看了下zookeeper的源码,先整理下leader选举机制 先看几个关键数据结构和函数 服务可能处于的状态,从名字应该很好理解 public enum ServerState { LOOKING ...