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) 新手写代码的时候往往会出现很多重复的代码没有提取出来,大师高瞻远瞩总能提点很多有意义的改进,今天重 ...
随机推荐
- 传统DOM事件处理程序
传统DOM事件处理程序与比HTML事件处理程序相比,优点:可以将HTML和JS脚本分离. 它的操作形式如下 : <body> <div>传统DOM事件处理程序与比HTML事件处 ...
- 【C++ Primer | 06】 函数
contexpr函数 const用于运行期常量,constexpr用于编译期常量 • [test1.cpp] #include <iostream> using namespace std ...
- P3144 关闭农场 并查集 反向
FJ和他的奶牛们正在计划离开小镇做一次长的旅行,同时FJ想临时地关掉他的农场以节省一些金钱. 这个农场一共有被用M条双向道路连接的N个谷仓(1<=N,M<=3000).为了关闭整个农场,F ...
- 【Java】 剑指offer(21) 调整数组顺序使奇数位于偶数前面
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇 ...
- python selenium-webdriver 元素定位(三)
上两篇的博文中介绍了python selenium的环境搭建和编写的第一个自动化测试脚本,从第二篇的例子中看出来再做UI级别的自动化测试的时候,有一个至关重要的因素,那就是元素的定位,只有从页面上找到 ...
- Linux —— 目录(文件夹)及文件相关处理指令
可参考这篇文章:https://mp.weixin.qq.com/s?__biz=MzU4MTU3OTI0Mg==&mid=2247484269&idx=1&sn=38869a ...
- 基于tensorflow搭建一个神经网络
一,tensorflow的简介 Tensorflow是一个采用数据流图,用于数值计算的 开源软件库.节点在图中表示数字操作,图中的线 则表示在节点间相互联系的多维数据数组,即张量 它灵活的架构让你可以 ...
- Cordova项目config.xml添加android权限
最近在开发cordova项目,安卓APP需要调用照相机和系统相册,在添加安卓权限的时候,总是报错. 以下是部分config.xml代码 <platform name="android& ...
- C# EF 与 MySql 的那些坑
之前一直想用 mysql 和 ef .然后多次尝试也只能感叹 还是 sqlsever 是亲儿子. 今天在单位又尝试了一次,然后就成功了,记录一下遇到的问题. 首先是安装包和驱动?. 请保证 MySql ...
- CF643E. Bear and Destroying Subtrees 期望dp
题目链接 CF643E. Bear and Destroying Subtrees 题解 dp[i][j]表示以i为根的子树中,树高小于等于j的概率 转移就是dp[i][j] = 0.5 + 0.5 ...