当前位置: 首页 > news >正文

海外网站seo优化免费长尾词挖掘工具

海外网站seo优化,免费长尾词挖掘工具,内网 wordpress慢,天津网站制作策划3.2操作符即方法 3.2.1操作符在Scala中的解释 在其它语言中,定义了一些基本的类型,但这些类型并不是我们在面向对象中所说的类。比如说1,这是一个int类型常量,但不能说它是int类型的对象。针对这些数据类型,存在一些…
3.2操作符即方法
3.2.1操作符在Scala中的解释

在其它语言中,定义了一些基本的类型,但这些类型并不是我们在面向对象中所说的类。比如说1,这是一个int类型常量,但不能说它是int类型的对象。针对这些数据类型,存在一些基本操作符,比如算数操作符“+”。Scala所追求的是极致的面向对象,因此Scala其实定义了 class Byteclass Short等等9个值类,但他们是不可继承的,抽象的,不能通过new创建一个Int对象,也不能编写他们的子类。

严格来说,Scala不存在操作符的概念,这些算术运算的加减乘除,逻辑运算的与或非,比较运算的大于小于等,其实都是定义在class Intclass Double中的成员方法。在Scala中,操作符即方法。在Scala中,表达式1+2的真正形式是1.+(2)也就是说,调用了Int类的“+”方法,对象2是一个传入的参数,最后返回一个对象3。

操作符即方法的概念不仅仅限于9种值类的操作符,Scala种任何类定义的成员方法都是操作符,且方法调用都能写成操作符的形式:去掉句点符号,并且在方法参数只有一个时可以省略括号。

在书中给出的代码是这样的:

scala> class Students3(val name: String,var score: Int) {| def exam(s:Int) = score = s| def friends(n:String,s:Int) = println("My friend " + n + " gets " + s + ".")| override def toString = name + "'s score is " + score + "."| }
​
// defined class Students3
​
scala> val stu3 = new Students3("Alice",80)
val stu3: Students3 = Alice's score is 80.
​
scala> stu3 exam 100
1 warning found
-- Warning: ------------------------------------------------------------------------------------------------------------
1 |stu3 exam 100|     ^^^^|     Alphanumeric method exam is not declared infix; it should not be used as infix operator.|     Instead, use method syntax .exam(...) or backticked identifier `exam`.

但在最新版Scala中直接调用会报错,这是因为新版Scala对于这个使用方法进行了约束,有3种解决方案:解决方法

方法 1:使用标准方法调用语法

将代码修改为标准的点号方法调用:

stu3.exam(100)

方法 2:使用反引号

如果希望继续使用中缀调用,则可以用反引号标记方法:

stu3 `exam` 100

方法 3:定义方法为 @infix(推荐)

如果希望以中缀形式调用 exam,可以在方法定义上添加 @infix 注解。例如:

import scala.annotation.infix
​
class Student {@infixdef exam(score: Int): Unit = {println(s"Score: $score")}
}

然后即可使用:

stu3 exam 100
3.2.2三种操作符

前缀操作符

只有“+,-,!,~”这四个,他们的操作数只有1个。可以创建一个类,在其中自定义这些方法,要求命名的格式类似于“unary_+”,如果末尾操作符在这四个以外,则不能使用这样的方法调用:

scala> class MyInt(val x:Int) {| def unary_! = -x| def unary_* = x * 2| }
// defined class MyInt
​
scala> val mi = new MyInt(10)
val mi: MyInt = MyInt@4df13dd0
​
scala> !mi
val res1: Int = -10
​
scala> *mi

*mi在这里是无法调用的,无法输出结果,必须以下面的形式调用:

scala> mi.unary_*
val res2: Int = 20

中缀操作符

中缀操作符左右两边都接收操作数,它对应普通的有参方法。两个操作数中的一个是调用该方法的对象,一个是传入该方法的参数,参数没有数量限制,只不过多个参数需要放在圆括号中。规定以冒号:结尾的操作符,其右操作数是调用该方法的对象,其余的操作数的左操作数是调用该方法的对象。

scala> class MyInt2(val x:Int) {| def +*(y:Int) = (x + y) * y| def +:(y:Int) = x + y| }
// defined class MyInt2
​
scala> val mi2 = new MyInt2(10)
val mi2: MyInt2 = MyInt2@6bf54260
​
scala> mi2 +* 10
val res3: Int = 200
​
scala> mi2 +: 10
-- [E008] Not Found Error: ---------------------------------------------------------------------------------------------
1 |mi2 +: 10|    ^^^^^|    value +: is not a member of Int
1 error found
​
scala> 10 +: mi2
val res4: Int = 20

后缀操作符

写在操作数后面的操作符称为后缀操作符,并且操作数只有一个,即调用该方法的对象。如果方法名构成前缀操作符的条件,那么既可以写成前缀操作符,又可以把完整的方法名写成后缀操作符。

scala> class MyInt3(val x:Int) {| def display() = println("the value is " + x + ".")| }
// defined class MyInt3
​
scala> val mi3 = new MyInt3(10)
val mi3: MyInt3 = MyInt3@1aee6d14
​
scala> import scala.language.postfixOps
​
scala> mi3.display()
the value is 10.
3.2.3操作符的优先级和结合性

优先级

可以通过方法名的首个字符比较优先级,前缀操作符的方法名要去掉关键字。圆括号优先级是最高的。下表从高到低列出了字符的优先级:

首个字符
所有其他字符(最高)
*/%
+-
:
=!
<>
&
^
|
所有字母
所有赋值操作符(最低)

这个规则有一个例外,就是如果操作符以等号结尾,并且不是<=,>=,==,!=,那么就认为是赋值运算符,优先级最低。比如sum*=1+2,优先级是+更高。

结合性

一般情况下同级的操作符都是从左往右结合的,但是以冒号结尾的中缀操作符的调用对象在右侧,所以这些操作符是从右往左结合的。

3.2.4预设操作符

Scala预设了常用的算术运算、逻辑运算的操作符,如下图所示:

3.2.5对象的相等性

相等性可以分为两种,一种是自然相等性,一种是引用相等性。

自然相等性就是我们常见的相等性,只要字面上的值相等,就认为两个对象相等。引用相等性用于比较两个变量是否引用了同一个对象,即是否指向JVM堆中的同一个内存空间。Scala种==和!=只用来比较自然相等性,引用相等性可以使用eqne方法,它们是被所有类隐式继承的,且不可被子类重写。

http://www.hkea.cn/news/408046/

相关文章:

  • 微网站怎么做滚动中国万网域名注册官网
  • 个人如何免费建网站seo在线优化工具 si
  • 双线主机可以做彩票网站吗网络推广合作协议
  • 做外贸的b2b网站域名批量查询系统
  • 建设网站需要哪些职位网站建设策划书
  • 苏州网站建设哪里好网站点击排名优化
  • 网站建设收费标准策划百度推广关键词越多越好吗
  • 网站怎么做更新吗如何建立网页
  • 国外建设工程招聘信息网站tool站长工具
  • 专业做相册书的网站电商网站建设制作
  • 银川网站开发公司电话东莞网
  • 环境保护局网站管理制度建设百度指数的主要功能有
  • 安装wordpress提示500错误关键词优化的策略有哪些
  • 企业网站建设公司排名深圳高端seo公司助力企业
  • 做网站套餐网站seo
  • 网站上的代码网页怎么做的下载百度软件
  • 网站功能模块建设搜狗推广
  • 网站做推广有用吗网站页面设计
  • 做简报的网站广州搜发网络科技有限公司
  • 南乐县住房和城乡建设局网站制作网站的步骤是什么
  • 金华做网站最专业的公司搜易网提供的技术服务
  • wordpress适合门户网站吗怎么营销自己的产品
  • 常用的网站类型有哪些seo优化专员编辑
  • 网站专题框架怎么做海阳seo排名
  • 手机网站代码下载黄页网站推广服务
  • 做网站前端多少钱在线bt种子
  • wordpress+模版+推荐专业网站seo推广
  • 浦项建设公司员工网站2023免费推广入口
  • 如何查询某个网站的设计公司最新推广注册app拿佣金
  • 八宝山做网站公司打广告