Scala中的可变对象、类型参数化与信息隐藏
1. 可变对象模拟与高阶函数应用
在电路模拟场景中,探测器会立即输出结果。这是因为安装在导线上的每个操作在安装时都会执行一次。以下是一个连接导线的半加器定义示例:
scala> halfAdder(input1, input2, sum, carry)
接着,依次将两个输入导线的信号设置为 true
并运行模拟:
scala> input1 setSignal true
scala> run()
*** simulation started, time = 0 ***
sum 8 new-value = true
scala> input2 setSignal true
scala> run()
*** simulation started, time = 8 ***
carry 11 new-value = true
sum 15 new-value = false
这个过程结合了可变状态和高阶函数两种看似不同的技术。可变状态用于模拟随时间改变状态的物理实体,高阶函数则在模拟框架中用于在指定的模拟时间点执行操作,同时在电路模拟中作为将操作与状态变化关联起来的触发器。此外,还展示了一种将特定领域语言定义为库的简单方法。
2. 类型参数化概述
类型参数化允许编写泛型类和特质。例如,集合是泛型的,需要一个类型参数,被定义为 Set