从0.16版本开始,Snail Language语言将函数作为First-Class Value。First-Class Value指的是:函数名和变量名之间没有区别,它们可以相互赋值。要注意的是,print既是函数名又是关键字,所以print可以作为右值,但是不能作为左值。现在一个变量可以表示为:整数、浮点数、字符串、数组、函数。由于是所有的变量都是动态类型,所以赋值时不需要在意当前的类型。
除了实现First-Class Value,0.16版本还实现了:
myprint = print //print的别名 funcname = "" func add(a, b) { funcname = __FUNCTION__ return a + b } func test() { print(funcname,"的结果为: ") } add.Action = test //在add return之前,调用test函数 f = add add = 100 myprint(f(10, 10), " Type=", f.Type(), "\n") print(add, " Type=", add.Type(), "\n") add = f print(add(1, 2), " Type=", add.Type(),"\n")
f的结果为: 20 Type=function 100 Type=integer add的结果为: 3 Type=function
开发自己的编程语言(六)—— First-Class Value
原文:http://blog.csdn.net/snlscript/article/details/18268743