GAML语言基础
GAML语言是GAMA平台使用的一种面向代理的编程语言,其基本构架与面向对象的编程语言JAVA类似,两者有许多共通之处,GAML语言在JAVA的技术上实现了一系列方便进行模拟的代理功能,如族、代理技能等等
基本数据类型
GAML的基本数据类型 有整数int 、浮点数float、字符串string和布尔值bool四种。除了基本数据类型,GAML还内置了一系列图形类型(如geometry、point 、path 、topology等)、集合类型(如pair、list、matrix、map等)以及代理类型(如agent、species等)。同时GAML还支持使用关键字type,在代理族species中自定义不同的类型。更多关于数据类型的内容可以参考官方文档。
变量
在GAML语言中,声明一个变量需要显式的声明变量的数据类型+数据名。
string text; // 在GAML中'//'是注释,表示其后的内容不会被认为是代码
text <- 'Hello World'; // '<-'是赋值操作,
int a <- 3; // GAML每一行代码都以';'结束
float b <- 4; // GAML会对基础数据类型进行自动转换
bool c <- a=b; // GAML中'='是判定是否相等,不是赋值
write(c); // 不在交互式命令行窗口时,可用write来输出变量的值列表、矩阵与字典
GAML中,关键字list表示列表,列表可以直接显式地声明列表中的数据类型,也可以声明列表中的数据类型来构建一个多数据类型的列表。
list<int> l_1 <- [5,4,9,8]; //此时要求列表中所有元素都是整数
list l_2 <- [4,5,'o','j',[1,2]]; //此时列表中元素有不同的数据类型
int i <- length(l_1); //返回列表长度
string s <- l_2[2]; //返回l_2列表第三个元素
int i <- l_2 at 0; //返回l_2列表第一个元素
int index <- l_2 index_of 5; //返回l_2列表中5的索引值
remove from:l_2 index:1; //删除l_2列表中索引值为1的元素(5)
remove item:'j' from:l_2; //删除l_2列表中的'j'
add item: 9 to: l_2 at: 2; //向l_2列表索引2的位置添加元素9
add 0 to: l_2; //向l_2列表末尾添加0
put 2 in: l_2 at:0; //向l_2列表开始添加2
put 3 in: l_2 key:2; //向l_2列表索引2的位置添加元素3GAML中,matrix表示一个二维矩阵或者一个一维向量。
GAML中,map表示一个存贮键(key)-值(value)对的字典,在字典中的每一对都表示为key::value 。
数学运算
GAML支持大部分的数学符号的直接运算,如加(+)、减(-)、乘(*)、除(/)、乘幂(^)等,此外还有余弦(cos)、正弦(sin)、正切(tan)、平方根(sqrt)、四舍五入(round)等运算,更多计算操作可以查看官方文档
逻辑运算
GAML逻辑运算符主要有 and、or 以及 !(表示not),! 在使用时应该放在表达式的前面。
比较运算
GAML语言中需要注意的时“=”表示相等关系,而不是像python里面的赋值,“!=”表示不相等关系,此外“<”、“>”、“<=”、“>=”都是基本的比较运算符。
条件语句
GAML基本的条件语句结构为if/else结构,条件包含在小括号()内,执行语句包含在大括号{}内。
GAML还提供一种使用?来简化表达的条件语句。
循环语句
GAML使用关键字loop来实现循环语句。
Last updated
Was this helpful?