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. 打开MSSQL 2008 R2的时候,展开数据库都显示以下的错误提示: 值不能为空。参数名viewinfo(microsoft.sqlserver.management.sqlstudio.explorer)

    打开MSSQL 2008 R2的时候,展开数据库都显示以下的错误提示: 值不能为空.参数名viewinfo(microsoft.sqlserver.management.sqlstudio.explo ...

  2. (第4篇)hadoop之魂--mapreduce计算框架,让收集的数据产生价值

    摘要: 通过前面的学习,大家已经了解了HDFS文件系统.有了数据,下一步就要分析计算这些数据,产生价值.接下来我们介绍Mapreduce计算框架,学习数据是怎样被利用的. 博主福利 给大家赠送一套ha ...

  3. ActiveMQ的应用实例

    一.部署和启动ActiveMQ 去官网下载:http://activemq.apache.org/ 我下载的是apache-activemq-5.12.0-bin.tar.gz, 解压到本地目录,进入 ...

  4. python爬取百度贴吧帖子

    最近偶尔学下爬虫,放上第二个demo吧 #-*- coding: utf-8 -*- import urllib import urllib2 import re #处理页面标签类 class Too ...

  5. Django2.0 path与Django1.x版本url正则匹配问题

    2.0内的path匹配正则时候无效, 导入re_path即可匹配正则

  6. 6-20 Ideal Path uva1599

    第一个bfs很快  但是我第一次做还用了结构体  这题完全不需要  反而导致了代码非常乱 输入: 一开始我是用m二维数组储存颜色  vector path来储存路径 但是二维数组的下标是不够用的   ...

  7. 《Gradle权威指南》--Android Gradle NDK支持

    No1: 在根项目下的local.properties文件中配置 sdk.dir=/home/frame/android/android-sdk ndk.dir=/home/frame/android ...

  8. hdu 3579 Hello Kiki【中国剩余定理】(模数不要求互素)(模板题)

    <题目链接> 题目大意: 给你一些模数和余数,让你求出满足这些要求的最小的数的值. 解题分析: 中国剩余定理(模数不一定互质)模板题 #include<stdio.h> usi ...

  9. Linux学习之用户配置文件详解(十四)

    Linux学习之用户配置文件详解 目录 用户信息文件/etc/password 影子文件/etc/shadow 组信息文件/etc/group 组密码文件/etc/gshadow 用户信息文件/etc ...

  10. 高效遍历匹配Json数据与双层for循环遍历Json数据

    工作中往往遇到这种情况,保留用户操作痕迹,比如用户选择过得东西,用户进入其它页面再返回来用户选择的的数据还在. 比如:1.购物车列表中勾选某些,点击任意一项,前往详情页,再返回购物车依旧需要呈现勾选状 ...