加入收藏 | 设为首页 | 会员中心 | 我要投稿 济源站长网 (https://www.0391zz.cn/)- 数据工具、数据仓库、行业智能、CDN、运营!
当前位置: 首页 > 站长资讯 > 动态 > 正文

我国物联网发展趋势已现

发布时间:2021-02-06 14:22:12 所属栏目:动态 来源:互联网
导读:什么是网关? 网关只是信息网络中的一个点,充当另一个网络的入口。设备和云之间的接口。它可以交换数据。 想象一下,你的生意就在一堵城堡墙后面,你不能和那堵墙外的任何东西交流。所以,你把一个部分拆了。现在你可以来来回回地得到大量的东西,但是没有任

什么是网关?

网关只是信息网络中的一个点,充当另一个网络的入口。设备和云之间的接口。它可以交换数据。

想象一下,你的生意就在一堵城堡墙后面,你不能和那堵墙外的任何东西交流。所以,你把一个部分拆了。现在你可以来来回回地得到大量的东西,但是没有任何控制。这不好,因为你无法阻止对手入侵。进入网关。现在你可以控制通过门发送和接收的内容。

物联网有时也被称为M2M——机器对机器,机器对人,人对机器,甚至机器到移动设备。可以设置网关以满足您的需要。
 

上面这行代码:先通过 map 操作将List[Int] 转化成 List[String],也就是把列表中的每个元素从 Int 类型转换成 String 类型,然后对这个字符串进行自定义规约,语句的执行结果清楚地展示了 reduce的过程。

事实上,List 已经为我们提供了 sum 方法,在实际应用中,我们应该使用该方法,而不是自己定义一个。作者只是希望通过上述例子,让大家意识到 Scala 虽然提供了用于循环的 while 语句,但大多数情况下,我们有其他更简便的方式能够达到同样的效果。
 

上述程序是习惯了 Java 或 C++ 的程序员想到的第一方案,但仔细观察会发现有几个问题:首先,使用了 var定义变量,我们在前面说过,尽量避免使用 var。其次,这个程序太长了,第一次拿到这个程序的人需要对着程序仔细端详一会:程序首先定义了两个变量,并将其初始化为 0,然后在 index小于列表长度时执行循环,在循环体中,累加列表中的元素,并将 index加 1,最后返回最终的累加值。直到这时,这个人才意识到这个程序是对一个数列求和。

让我们换个角度,尝试用递归的方式去思考这个问题,对一个数列的求和问题可以简化为该数列的第一个元素加上由后续元素组成的数列的和,依此类推,直到后续元素组成的数列为空返回 0。具体程序如下,使用递归,原来需要 9 行实现的程序现在只需要两行,而且程序逻辑看起来更清晰,更易懂。

使用递归对数列求和:
 

让我们再来和 Java 中对应的函数定义语法比较一下。首先,函数体没有像 Java 那样放在 {}里。Scala 中的一条语句其实是一个表达式,函数的执行过程就是对函数体内的表达式的求值过程,最后一条表达式的值就是函数的返回值。如果函数体只包含一条表达式,则可以省略 {}。其次,没有显示的 return语句,最后一条表达式的值会自动返回给函数的调用者。

和 Java 不同,在 Scala 中,函数内部还可以定义其他函数。比如上面的程序中,如果用户只对 sum_of_square 函数感兴趣,则我们可以将 square 函数定义为内部函数,实现细节的隐藏。

定义内部函数:
 

一、Scala开发环境

搭建Scala 开发环境,一是在IntelliJ IDEA 上安装Scala 插件和安装Scala SDK,二是通过Scala RELP(Read-Eval-Print Loop)交互式环境,该交互式环境适合代码简单调试,不太适合进行应用开发。

二、变量和函数

定义变量时没有指定变量类型。这是否意味着 Scala 是和 Python 或者 Ruby 一样的动态类型语言呢?恰恰相反,Scala 是严格意义上的静态类型语言,由于其采用了先进的类型推断(Type Inference)技术,程序员不需要在写程序时显式指定类型,编译器会根据上下文推断出类型信息。比如变量 x被赋值为 0,0 是一个整型,所以 x的类型被推断出为整型。当然,Scala 语言也允许显示指定类型,如变量 x1,y1的定义。一般情况下,我们应尽量使用 Scala 提供的类型推断系统使代码看上去更加简洁。

另一个发现是程序语句结尾没有分号,这也是 Scala 中约定俗成的编程习惯。大多数情况下分号都是可省的,如果你需要将两条语句写在同一行,则需要用分号分开它们。

函数的定义也非常简单,使用关键字 def,后跟函数名和参数列表,如果不是递归函数可以选择省略函数返回类型。Scala 还支持定义匿名函数,匿名函数由参数列表,箭头连接符和函数体组成。函数在 Scala 中属于一级对象,它可以作为参数传递给其他函数,可以作为另一个函数的返回值,或者赋给一个变量。在下面的示例代码中,定义的匿名函数被赋给变量 cube。匿名函数使用起来非常方便,比如 List对象中的一些方法需要传入一个简单的函数作为参数,我们当然可以定义一个函数,然后再传给 List对象中的方法,但使用匿名函数,程序看上去更加简洁。

(编辑:济源站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读