The Lox Language
Automatic memory management
管理内存主要有两项技术:reference counting
和tracing garbage collection
(又称GC
),前者更易实现(Perl
,PHP
,Python
),但会导致一些问题,最终还是要添加tracing GC
(?)。
Logical operators
or
和and
都是control flow constructs
,因为“短路”:and
左边为false
就直接返回
Statements&Expressions
Where an expression’s main job is to produce a value, a statement’s job is to produce an effect
"some expression";//this is an expression statement.
Functions
argument
:实参
parameter
:形参
Closures
first class functions
:函数可以被当作参数传递给其他函数,可以作为另一个函数的返回值,还可以被赋值给一个变量。
文中这个例子感觉不太理解(可能是它的定义的语言支持这样,whatever,我们本也想尝试写Java的解释器):
fun addPair(a, b) {
return a + b;
}
fun identity(a) {
return a;
}
print identity(addPair)(1, 2); // Prints "3".
当有了闭包后,变量的作用域就不仅仅是一个栈式的了。
Classes or prototypes
有两种方式实现objects
:
-
class-based
instance
:store the state for each object and have a reference to the instance’s classclasses
:contain the methods and inheritance chain
-
prototype-based
object
:each individual object may contain state and methods
注意在lox
中并不将基本类的对象当作类实例