文章目录

  • 一、Groovy 构造函数中为成员赋值
  • 二、Groovy 函数的参数传递与键值对参数
  • 三、完整代码示例

一、Groovy 构造函数中为成员赋值


Groovy 类没有定义构造函数 , 但是可以使用如下形式的构造函数 , 为 Groovy 类设置初始值 ;

new 类名(成员名1: 成员值1, 成员名2: 成员值2)

顺序随意 : 成员的顺序随意 , 没有强制要求 , 只需要 成员名 与 成员值对应即可 ;

个数随意 : 成员个数随意 , 可以为所有的属性赋值 , 也可以只为其中的部分属性赋值 ;

如下代码 :

class Student {def namedef age
}// 实例化 Student 类
// 正常赋值
def student = new Student(name: "Tom", age: 18)
// 颠倒顺序赋值
def student2 = new Student(age: 16, name: "Jerry")
// 只为 name 属性赋值
def student3 = new Student(name: "Jim")// 打印两个对象的值
println "student : ${student.name} , ${student.age}"
println "student2 : ${student2.name} , ${student2.age}"
println "student3 : ${student3.name} , ${student3.age}"

执行结果为 :

student : Tom , 18
student2 : Jerry , 16
student3 : Jim , null

二、Groovy 函数的参数传递与键值对参数


在 Groovy 的构造函数中 , 可以使用

成员名1: 成员值1, 成员名2: 成员值2

类型的参数 , 这是键值对 map 类型的集合 ;

但是对于普通的函数 , 不能使用上述格式 , 如果出现

变量名1: 变量值1, 变量名2: 变量值2

样式的代码 , 会将上述参数识别为一个 map 集合 ;

定义了一个 Groovy 类 , 其中定义的方法接收 222 个参数 ;

class Student {def namedef agedef printValue(a, b) {println "${a}, ${b}"}
}

如果使用 student.printValue(a: “Tom”, b: 18) , 就会报错 , 提示只传入了一个 map 集合作为参数 ;

必须使用如下形式 , 才能正确执行 printValue 函数 ;

// 传入的 a: "Tom", b: 18 是第一个参数 , 这是一个 map 集合
// 第二个参数是 "Jerry" 字符串
student.printValue(a: "Tom", b: 18, "Jerry")

三、完整代码示例


完整代码示例 :

class Student {def namedef agedef printValue(a, b) {println "${a}, ${b}"}
}// 实例化 Student 类
def student = new Student(name: "Tom", age: 18)
def student2 = new Student(age: 16, name: "Jerry")
def student3 = new Student(name: "Jim")// 打印两个对象的值
println "student : ${student.name} , ${student.age}"
println "student2 : ${student2.name} , ${student2.age}"
println "student3 : ${student3.name} , ${student3.age}"// 下面是错误用法
// a: "Tom", b: 18 参数代表了一个键值对集合 , 执行会报错
// student.printValue(a: "Tom", b: 18)// 传入的 a: "Tom", b: 18 是第一个参数 , 这是一个 map 集合
// 第二个参数是 "Jerry" 字符串
student.printValue(a: "Tom", b: 18, "Jerry")

执行结果 :

student : Tom , 18
student2 : Jerry , 16
student3 : Jim , null
[a:Tom, b:18], Jerry

【Groovy】Groovy 方法调用 ( Groovy 构造函数中为成员赋值 | Groovy 函数的参数传递与键值对参数 | 完整代码示例 )相关推荐

  1. 【Groovy】自定义 Xml 生成器 BuilderSupport ( 创建 XmlNode 节点 | 管理 XmlNode 节点并将根节点转为 Xml 信息 | 完整代码示例 )

    文章目录 一.创建 XmlNode 节点 二.管理 XmlNode 节点并将根节点转为 Xml 信息 三.完整代码示例 1.自定义 Xml 生成器 MyBuilderSupport 2.Xml 节点封 ...

  2. 【Groovy】Groovy 脚本调用 ( Groovy 类中调用 Groovy 脚本 | 创建 GroovyShell 对象并执行 Groovy 脚本 | 完整代码示例 )

    文章目录 一.Groovy 类中调用 Groovy 脚本 1.创建 GroovyShell 对象并执行 Groovy 脚本 2.代码示例 二.完整代码示例 1.调用者 Groovy 脚本的类 2.被调 ...

  3. 【Groovy】编译时元编程 ( ASTTransformation#visit 方法中访问 Groovy 类、方法、字段、属性 | 完整代码示例及进行编译时处理的编译过程 )

    文章目录 一.ASTTransformation#visit 方法中访问 Groovy 类.方法.字段.属性 二.完整代码示例及进行编译时处理的编译过程 1.Groovy 脚本 Groovy.groo ...

  4. Dictionary作为数据源绑定,调用c++库中返回为BYTE*的函数,listView项排序

    最近在做一个电子档案管理的项目.现在还处于初期,只是做一个简单demo拿去跟客户演示.至于最后谈不谈得下来,到底做不做,反正我是不看好,但没因为这样就马马虎虎.草草了事.这个项目算是b/s加c/s混合 ...

  5. 28.构造函数中,成员变量一定要通过初始化列表来初始化的?

    首先要明确:如果对象成员是const或者引用的话,必须将其初始化! 构造函数中,成员变量一定要通过初始化列表来初始化的的几种情况! 1)对象成员是const或者引用 #include <iost ...

  6. 23.C++- 继承的多种方式、显示调用父类构造函数、父子之间的同名函数、virtual虚函数...

     上章链接: 22.C++- 继承与组合,protected访问级别 继承方式 继承方式位于定义子类的":"后面,比如: class Line : public Object // ...

  7. 【Flutter】Future 与 FutureBuilder 异步编程代码示例 ( FutureBuilder 构造函数设置 | 处理 Flutter 中文乱码 | 完整代码示例 )

    文章目录 一.FutureBuilder 简介 二.处理 Flutter 中的中文乱码 三.完整代码示例 四.相关资源 一.FutureBuilder 简介 FutureBuilder 本质是组件 : ...

  8. Java网络编程 Socket、ServerSocket 详解,方法介绍及完整代码示例

    Java网络编程 Socket.ServerSocket 详解,方法介绍及完整代码示例 概念 什么是网络编程? 网络编程是指编写运行在多个设备(计算机)的程序,这些设备通过网络连接起来.当这些通过网络 ...

  9. 【Android 逆向】使用 Python 解析 ELF 文件 ( Capstone 反汇编 ELF 文件中的机器码数据 | 完整代码示例 ) ★★★

    文章目录 一.完整代码示例 二.执行结果 三.博客资源 一.完整代码示例 使用 Python 解析 ELF 文件完整代码示例 : # coding=utf-8 # 解析 elf 文件需要导入的依赖库 ...

最新文章

  1. ios 静态库合成_iOS链接原理解析与应用实践
  2. c语言表达式和表达式语句的区别,C语言中表达式和表达式语句的区别(什么又叫做表达式)?...
  3. 基于django的视频点播网站开发-step2-搭建环境
  4. java读取文件的方法是_Java读取文件方法大全
  5. php serialize取值,PHP 序列化(serialize)格式详解
  6. Continuous Intervals Gym - 102222L(2018宁夏邀请赛暨2019银川icpc网络预选赛)
  7. 乐视网:对FF与第九城市设立合资公司的计划不知情
  8. C宏的一个技巧:可变参数
  9. springcloud断点续传源码_两套SpringCloud版的开源项目,项目源码和教程齐全
  10. 丢失更新的问题产生和解决
  11. Linux的网络安装
  12. android中TextView属性之autoText解析
  13. 压紧力变化的平均值matlab,基于MATLAB遗传算法的汽车拉式离合器膜片弹簧结构参数优化设计...
  14. Word中插入MATLAB矢量图
  15. R语言——(四)、数据读入与预处理
  16. 从学员角度体验教练技术之考驾照
  17. Mac 平台下功能强大的Shimo软件使用指南
  18. 电脑重装系统后播放视频卡顿怎么办
  19. 学生学习时长统计--python程序设计
  20. 华科计算机专硕英语几,2020华中科技大学计算机专硕考研成功经验谈

热门文章

  1. Windows常用快捷键汇总
  2. Android ListView存在多个item样式的处理方法
  3. 【斗医】【10】Web应用开发20天
  4. wordpress图片水印插件DX-Watermark
  5. shell学习之常用命令总结
  6. linux下ssh登录PIX防火墙
  7. 自整理IE6,IE7,IE8,Firefox兼容方案。。。
  8. 简易而又灵活的Javascript拖拽框架(四)
  9. MVC 下 JsonResult 的使用方法(JsonRequestBehavior.AllowGet)转
  10. 一天搞定CSS:表格(table)--19