ChaiScript的基础语法概要
关于ChaiScript的基础语法讲解并不像如何使用ChaiScript那样模糊,在官网上已经讲的很详尽清楚了,只不过是英文版本,我就简单的翻译一下,我尽量建议大家看英文版本,因为我的英文水平我自己都不放心……
ChaiScript支持If语句,但是需要说明:"else if"是一个单独的关键字而不是两个分开的关键字。大概的用法格式如下:
var i = 2
if (i < 2)
{
print("less than 2")
}
else if (i == 2)
{
print("equal to 2")
}
else
{
print("more than 2")
}
ChaiScript跟C + +的循环风格差不多有两种:for循环和while循环。大概的用法如下:
1) For 循环:
for (var i = 0; i < 10; ++i)
{
print("i: " + i.to_string())
}
2) While 循环:
var i = 0
while (i < 10)
{
print("i: " + i.to_string())
++i
}
说明:跟C++一样,在ChaiScript中也可以使用break关键字来中断循环。
ChaiScript支持少数容器类型,也允许用简捷的写法创建Vectors和Maps。比如:
var x = [1, 2, 3]
print(x[1])
var x = ["bob":1, "fred":2]
print(x["fred"])
同样,我们也可以通过一个值的范围来快速的创建Vector容器,例如:
var x = [1..10]
print(x)
在ChaiScript中定义函数有两种书写方法。
1) 使用“def”关键字定义静态函数,在全局范围内都可见。比如:
def add_elems(x, y)
{
x + y
}
print(add_elems(5, 10))
var add_elems = fun(x, y) { x + y }
print(add_elems(5, 10))
函数的返回值也可以有两种写法。
一种是跟C++一样,明确的使用关键字”return”返回,用法跟C++一样,例如:
def five()
{
return 5
}
print(five())
另一种是隐式的返回函数结果,就是当一个函数没有明确的使用return语句返回时,最后的这个数值就作为函数的返回值,比如:
def five()
{
5
}
print(five())
这样定义函数的返回值与上一种写法是一样的。
其实ChaiScript并不支持什么方法,只是利用了函数的一个被叫作“syntactic sugar”的技术代替的方法。例如:
5.to_string()
to_string(5)
这就是:值在“.”的左边作为第一个参数命名的函数而已,没有别的区别。
ChaiScript允许函数重载,使用派遣函数可以自动的使用相应的函数已达到相应的功能。比如说,你想从一堆数中打印出正确的复数,可以这样写代码:
def print_num(x) : x == 0 || x > 1
{
print(x.to_string() + " units")
}
def print_num(x) : x == 1
{
print(x.to_string() + " unit")
}
print_num(2)
print_num(1)
print_num(0)
转载自聚星亭
关于ChaiScript的基础语法讲解并不像如何使用ChaiScript那样模糊,在官网上已经讲的很详尽清楚了,只不过是英文版本,我就简单的翻译一下,我尽量建议大家看英文版本,因为我的英文水平我自己都不放心……
ChaiScript支持If语句,但是需要说明:"else if"是一个单独的关键字而不是两个分开的关键字。大概的用法格式如下:
var i = 2
if (i < 2)
{
print("less than 2")
}
else if (i == 2)
{
print("equal to 2")
}
else
{
print("more than 2")
{
print("less than 2")
}
else if (i == 2)
{
print("equal to 2")
}
else
{
print("more than 2")
}
ChaiScript跟C + +的循环风格差不多有两种:for循环和while循环。大概的用法如下:
1) For 循环:
for (var i = 0; i < 10; ++i)
{
print("i: " + i.to_string())
}
{
print("i: " + i.to_string())
}
2) While 循环:
var i = 0
while (i < 10)
{
print("i: " + i.to_string())
++i
}
while (i < 10)
{
print("i: " + i.to_string())
++i
}
说明:跟C++一样,在ChaiScript中也可以使用break关键字来中断循环。
ChaiScript支持少数容器类型,也允许用简捷的写法创建Vectors和Maps。比如:
var x = [1, 2, 3]
print(x[1])
print(x[1])
var x = ["bob":1, "fred":2]
print(x["fred"])
print(x["fred"])
同样,我们也可以通过一个值的范围来快速的创建Vector容器,例如:
var x = [1..10]
print(x)
在ChaiScript中定义函数有两种书写方法。
1) 使用“def”关键字定义静态函数,在全局范围内都可见。比如:
def add_elems(x, y)
{
x + y
}
{
x + y
}
print(add_elems(5, 10))
var add_elems = fun(x, y) { x + y }
print(add_elems(5, 10))
print(add_elems(5, 10))
函数的返回值也可以有两种写法。
一种是跟C++一样,明确的使用关键字”return”返回,用法跟C++一样,例如:
def five()
{
return 5
}
{
return 5
}
print(five())
另一种是隐式的返回函数结果,就是当一个函数没有明确的使用return语句返回时,最后的这个数值就作为函数的返回值,比如:
def five()
{
5
}
{
5
}
print(five())
这样定义函数的返回值与上一种写法是一样的。
其实ChaiScript并不支持什么方法,只是利用了函数的一个被叫作“syntactic sugar”的技术代替的方法。例如:
5.to_string()
to_string(5)
to_string(5)
这就是:值在“.”的左边作为第一个参数命名的函数而已,没有别的区别。
ChaiScript允许函数重载,使用派遣函数可以自动的使用相应的函数已达到相应的功能。比如说,你想从一堆数中打印出正确的复数,可以这样写代码:
def print_num(x) : x == 0 || x > 1
{
print(x.to_string() + " units")
}
{
print(x.to_string() + " units")
}
def print_num(x) : x == 1
{
print(x.to_string() + " unit")
}
print_num(2)
print_num(1)
print_num(0)
{
print(x.to_string() + " unit")
}
print_num(2)
print_num(1)
print_num(0)
转载自聚星亭
沪ICP备09069436号