1. var & val
var 变量,可变
val 类似常量,不可变
2. map/reduce
val list = List(1,2,3,4,5,6) list.map( f => println(s"val: $f") ) // val:1 xxx val:6 val sum = list.reduce( (sum, n) => sum+n ) // 21
3. 泛型
scala泛型设计太过复杂,泛型支持多个奇怪的操作符,如:<: >: <% T:class T:Ordering
3.1 上下边界 <: >:
A <: B A是B的子类
// 基类 class Person(val name: String) { def talk(person: Person){ println(this.name + " talk to " + person.name) } } // 派生类 class Worker(name: String) extends Person(name) // 普通类 class Dog(val name: String) /** * 泛型为[] * <: 上边界,指明本身及派生类 */ class Club1[T <: Person](p1: T, p2: T){ def communicate = p1.talk(p2) } // 测试代码 val p = new Person("Spark") val w = new Worker("Scala") new Club1(p, w).communicate // 无参调用可省略(),输出: Spark talk to Scala
3.2 view bound <%
A <% B A可以转化B,需要一个隐式转换函数。
// <% class Club2[T <% Person](p1: T, p2: T){ def communicate = p1.talk(p2) } // 隐式转换函数 implicit def dog2Person(dog: Dog) = new Person(dog.name) val d = new Dog("Dog") new Club2[Person](p, w).communicate // 对象擦除至Object,需[object]强转。 输出:Spark talk to dog
3.3 逆变和协变 +T -T
+T Container[A]是Container[B]的子类
// Earth class Earth { def sound(){ println("Hello") } } // Animal class Animal extends Earth{ override def sound() = { println("Animal sound") } } // Bird class Bird extends Animal{ override def sound() = { println("Bird sound") } } // Container class Space[+T] { println("Hello space") } // 测试代码 var a = new Space[Animal] a = new Space[Bird] // Bird为Animal子类,ok // a = new Space[Earth] // Earth为父类,error
输出:
hello space
hello space
相关推荐
《浙江中控InPlant SCADA使用说明》 中控InPlant SCADA系统是一款专为工业自动化领域设计的高级监控与数据采集系统(Supervisory Control and Data Acquisition)。它结合了现代计算机技术、网络通信技术和自动化...
Rapid SCADA 中文使用说明书 Rapid SCADA 是一种软件,可以自动收集与控制器通信的数据,处理数据并将信息提供给调度员。该软件支持常用的通信标准,例如 Modbus 协议和 OPC,允许使用大量的各种设备。Rapid SCADA ...
2. **引用SCADA组件**:在C#项目中,添加对SCADA SDK中DLL文件的引用,这将使你的项目能够访问SCADA的功能。 3. **配置连接参数**:编写代码设置连接到SCADA服务器的参数,如IP地址、端口号、用户名和密码。 4. **...
SCADA系统软件:Rockwell Software SCADA二次开发_RockwellSoftwareSCADA产品线介绍.docx SCADA系统软件:Rockwell Software SCADA二次开发_SCADA系统基础与概述.docx SCADA系统软件:Rockwell Software SCADA二次...
### INT-SCADA监控系统使用手册关键知识点 #### 第一章 概述 - **系统简介**:INT-SCADA监控系统是由南京因泰莱电器股份有限公司开发的一款面向电力系统的自动化监控软件。该系统旨在通过集成数据采集、显示、控制...
2. **可编程逻辑控制器(PLC)**:PLCs用于控制生产设备,它们接收来自SCADA系统的指令并执行相应的操作。 3. **通信网络**:包括有线和无线网络,连接RTUs、PLCs和中心站,确保数据的实时传输。 4. **人机界面...
SCADA软件:Rockwell Software二次开发_RockwellSoftware二次开发工具介绍.docx SCADA软件:Rockwell Software二次开发_RockwellSoftware二次开发环境搭建.docx SCADA软件:Rockwell Software二次开发_...
最新的Citect SCADA 2018软件,软件为ISO安装文件,由于安装文件太大,切分成2个文件上传,这是第二个压缩包
2. **RTU(远程终端单元)/PLC(可编程逻辑控制器)**:这些是连接现场设备和SCADA服务器的中间设备,负责数据采集和控制命令的执行。 3. **通信网络**:SCADA系统依赖于各种通信协议(如Modbus、OPC等)来传输现场...
《工业控制系统及应用—SCADA系统》教学课件—08SCADA系统设计与开发.pdf《工业控制系统及应用—SCADA系统》教学课件—08SCADA系统设计与开发.pdf《工业控制系统及应用—SCADA系统》教学课件—08SCADA系统设计与开发...
2. 监控界面:SCADA系统的用户界面通常包含图形化操作台,显示设备状态、报警信息和历史数据。C#提供了丰富的Windows Forms和WPF库,可以创建交互式、直观的GUI,展示实时数据图表和报警窗口。 3. 控制逻辑:SCADA...
SCADA系统软件:GE Proficy SCADA二次开发_ProficySCADAAPI使用.docx SCADA系统软件:GE Proficy SCADA二次开发_ProficySCADACustom组件开发.docx SCADA系统软件:GE Proficy SCADA二次开发_ProficySCADADatabase...
总之,CitectSCADA是一款功能全面、易于使用的SCADA软件,适用于多种工业环境。通过合理规划和配置,可以帮助企业提高生产效率和管理水平。希望以上内容能够帮助您更好地理解和使用CitectSCADA。
数据库管理通常使用SQL(结构化查询语言),而C#提供了ADO.NET框架,可以方便地进行数据库操作。 压缩包内的文件名“SCADA”可能是项目的主要入口点或核心组件,可能包含主程序、配置文件或其他重要组件。进一步...
2. **时间序列管理**:InfluxDB 2.0优化了对时间序列数据的处理,支持高效的插入和查询操作,使得大量数据的存储和检索变得高效。 3. **数据分析**:InfluxDB提供了强大的查询语言(InfluxQL和新引入的Flux),用户...
2. 人机界面(HMI):HMI是用户与SCADA系统交互的图形化界面,通常包含仪表盘、图表、报警窗口等元素。开发HMI源码需要熟悉图形设计和用户交互设计原则,同时,需要支持多种数据可视化方式,以便于操作人员快速理解...
SCADA系统软件:Siemens SIMATIC WinCC SCADA二次开发_ActiveX控件开发.docx SCADA系统软件:Siemens SIMATIC WinCC SCADA二次开发_C-C++二次开发.docx SCADA系统软件:Siemens SIMATIC WinCC SCADA二次开发_...
2. **职责**:信息中心是SCADA和检漏系统设备运行维护的责任部门,负责系统的正常运行、数据备份、软件扩容、硬件升级等工作。 3. **运行管理内容**: - **设备范围**:涵盖了冗余的主服务器、历史服务器、磁盘...
第一代是基于专用计算机和专用操作系统的SCADA系统,第二代是基于通用计算机的SCADA系统,第三代是基于分布式计算机网络以及关系数据库技术的SCADA系统。第四代SCADA/EMS系统的基础条件已经或即将具备,将采用...