Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Scala基础入门(九)Scala 方法中缀表示法、后缀表示法

Scala基础入门(九)Scala 方法中缀表示法、后缀表示法

作者头像
青山师
发布于 2023-05-04 13:32:48
发布于 2023-05-04 13:32:48
48800
代码可运行
举报
运行总次数:0
代码可运行

Scala 编程规范中,有一些很有意思的规则。合理地使用这些规则,可以帮助我们编写更简洁更有效的代码。

Scala 方法调用

一般来说,Scala中的方法调用遵循Java惯例。换句话说在目标方法和点符(.)之间是没有任何间隙的,并且最好遵循参数之间用逗号隔开,后面的参数与前面参数后面的逗号应该存在一个空格。调用target的foo方法示例如下:

foo(42, bar) target.foo(42, bar) target.foo()

在 Scala 2.8 版本中,开始支持命名参数。方法调用中命名的参数应该作为常规参数处理(相应的间距,以逗号为间隔),在等号的两边各有一个空格。形如:

foo(x = 6, y = 7)

0参调用

Scala 允许省略圆括号 () 调用无参方法。

reply() // is the same as reply

0参调用示例应用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.byron4j.scala.basic.method

object InfixDemo {
  def main(args: Array[String]): Unit = {


    /**
     * 无参方法调用: 可以省略圆括号 START...
     */
    reply();

    reply;
     /**
     * 无参方法调用: 可以省略圆括号 END
     */




  }


  def reply() : Unit = {
    println("无参方法被调用!");
  }

}

输出结果为:

无参方法被调用! 无参方法被调用!

中缀表示法 Infix notation

Scala 有一种特殊的方法调用只有一个参数的方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 推荐使用
a + b

// 有效,但是可读性不好
a+b

// 有效, 但是给人感觉很奇怪
a.+(b)

但要避免使用几乎所有字母命名的方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 推荐使用
names.mkString(",")

// 有时候也会看到使用; 但是有争议
names mkString ","

但是在灰色区域像 max 这样的短方法,以下使用方法还是很常见的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 比较常见
a max b

hello方法是一个只有一个参数的方法, 可以使用中缀表示法调用hello方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package com.byron4j.scala.basic.method

object InfixDemo {
  def main(args: Array[String]): Unit = {


    /**
     * 无参方法调用: 可以省略圆括号 START...
     */
    reply();

    reply;
     /**
     * 无参方法调用: 可以省略圆括号 END
     */



    /**
     * 中缀表示法 调用只含一个参数的方法
     * 语法: 调用方 方法名 方法参数
     */
    InfixDemo hello "Lily";


  }


  def reply() : Unit = {
    println("无参方法被调用!");
  }

  def hello(name: String) : Unit = {
    println("Hello, " + name);
  }

}

后缀表示法 Postfix Notation

后缀表示法适用于调用无参方法。前面的 reply 等同于 reply();就是后缀表示法。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-08-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
2021年大数据常用语言Scala(十二):基础语法学习 方法调用方式
---- 方法调用方式 在scala中,有以下几种方法调用方式, 后缀调用法 中缀调用法 花括号调用法 无括号调用法 在后续编写spark、flink程序时,我们会使用到这些方法调用方式。 后缀调用法 这种方法与Java没有区别。 语法 对象名.方法名(参数) 示例 使用后缀法Math.abs求绝对值 参考代码 scala> Math.abs(-1) res3: Int = 1 中缀调用法 语法 对象名 方法名 参数 例如:1 to 10 [!TIP] 如果有多个参数,使用括号括起来 示例 使用中缀法Ma
Lansonli
2021/10/11
3300
Scala基础入门(十一 ) Vector集合容器使用介绍
Vector 是一个容器,可以保存其他数据对象,也称为集合。 Vector 是Scala标准包的一部分,我们可以直接使用,不需要导包。我们以实例来了解 Vector 容器。
青山师
2023/05/04
1760
Scala入门与进阶(三)- 函数
默认参数:在函数定义时,允许指定参数的默认值 $SPARK_HOME/conf/spark-defaults.conf
Meet相识
2018/09/12
6710
Scala入门与进阶(三)- 函数
Scala 学习笔记之基础语法
不需要给出值或者变量的类型,可以从你用来初始化它的表达式推断出来.只声明值或者变量但不做初始化会报错:
smartsi
2019/08/07
5680
Scala基础入门(十 ) Scala for循环使用方法
for循环会遍历一个值序列。常用于使用其中每个值执行某些操作。 for循环以关键字for来头,后面跟圆括号括起来的遍历序列的表达式。在括号内,最先看到的是依次接受每个值的标识符,后面有一个执行它的 <- 符号,理解为将后面序列产生的值赋予前面的变量。 实例中,使用 Range 类产生序列,并将该序列赋值到一个result的变量中输出。
青山师
2023/05/04
2260
Scala的基础概念
例如:调用 def Add(y:Int) = x + y 其结果为xy之和,并且调用之后没有引起x值的变换,没有副作用 所以,Add函数没有副作用
ZONGLYN
2019/08/08
7550
带你快速掌握Scala操作———(2)
继续上一篇《Scala基础操作(1)———Scala解释器,声明变量,字符串》给大家接着分享下面的操作!!!!!!
刘浩的BigDataPath
2021/04/13
8490
带你快速掌握Scala操作———(2)
Scala第五章节
实际开发中, 我们需要编写大量的逻辑代码, 这就势必会涉及到重复的需求. 例如: 求10和20的最大值, 求11和22的最大值, 像这样的需求, 用来进行比较的逻辑代码需要编写两次, 而如果把比较的逻辑代码放到方法中, 只需要编写一次就可以了, 这就是方法. scala中的方法和Java方法类似, 但scala与Java定义方法的语法是不一样的。
Maynor
2021/04/09
7430
scala快速入门系列【方法】
本篇作为scala快速入门系列的第九篇博客,为大家带来关于方法的相关内容。
大数据梦想家
2021/01/26
3870
scala快速入门系列【方法】
scala:函数至简原则、函数简化过程
1.return可以省略,Scala会使用函数体的最后一行代码作为返回值 2.如果函数体只有一行代码,可以省略花括号 3.返回值类型如果能够推断出来,那么可以省略(:和返回值类型一起省略) 4.如果有return,则不能省略返回值类型,必须指定 5.如果函数明确声明unit,那么即使函数体中使用return关键字也不起作用 6.Scala如果期望是无返回值类型,可以省略等号 这种形式称为过程 7.如果函数无参,但是声明了参数列表,那么调用时,小括号,可加可不加 8.如果函数没有参数列表,那么小括号可以省
孙晨c
2021/02/25
1.3K0
Scala基础入门(七)方法、类、对象详解
使用 def 关键字定义方法, 后面跟 方法名 和 小括号中的 参数列表 。 参数列表后面跟一个 冒号 和 方法的返回结果类型, 返回结果类型后面是一个 等号,表示下面是方法体, 方法体用一个 花括号 包含。 这和前面的多行表达式一样, 方法体可以看作一个 表达式。
青山师
2023/05/04
5900
Scala基础入门(十三 ) 类、函数参数形式、种类、使用方式总结
在创建类的对象时,有时候是需要通过传递某些信息进行初始化的,此时可以使用类参数。类参数看起来跟方法参数列表一样,但它是位于类名的后面,类似于其他高级语言的构造器(构造函数)。 我们定义了类ClassArg并制定了一个参数,使用new关键字创建对象时,需要指定参数a,我们还可以看到 val ca = new ClassArg(10); 会执行类体的打印语句,即使它在f()方法之前,这涉及到Scala 类的初始化过程:看似在f()之前执行;但其实类的所有的定义(值、方法)会在类体执行前初始化,也就是f()方法是先于打印语句初始化的。
青山师
2023/05/04
2770
Kotlin之基本语法
在今年Google IO大会上Google已经明确kotlin作为为Android第一官方语言的地位。我相信Google的决意,就像当初毫不犹豫的抛弃eclipse转向as,kotlin已经是不可避免的大势所趋了。再加上Kotlin与java代码完全兼容,所以从Java转向Kotlin是一件很容易的事情。Kotlin语法简单,它融合了当前多种语言的优势,可以是一门明星语言。 下面就Kotlin的一些基本语法做一个讲解。 包 一个源文件往往以包声明开始:源文件的所有内容(比如类和函数)都被包声明并包括。 pa
xiangzhihong
2018/01/26
1.1K0
第2章 Kotlin 语法基础第2章 Kotlin 语法基础
人与人之间通过语言来交流沟通,互相协作。人与计算机之间怎样“交流沟通”呢?答案是编程语言。一门语言有词、短语、句子、文章等,对应到编程语言中就是关键字、标识符、表达式、源代码文件等。通常一门编程语言的基本构成如下图所示
一个会写诗的程序员
2018/08/17
2.7K0
第2章 Kotlin 语法基础第2章 Kotlin 语法基础
Scala专题系列(五):类与对象
println(p.age) // 在调用无参方法时,圆括号可以不写 一般对于修改值得方法加上圆括号,对于取值的方法可以不写圆括号
用户5252199
2022/04/18
5870
scala与java之间的那些事
  scala与java之间的关系,我认为可以用一句话来开头:scala来源于java,但又高于java。   scala的设计者Martin Odersky就是一个JAVA控,这位牛人设计了javac和编写了jdk中的通用代码。可以说java语言本身就是Martin Odersky一步一步看着长大的。所以scala可以说打根起就和JAVA有着远远悠长的血缘关系。   Martin Odersky还在写java那会,就立志开发达成一个目标:让写程序这样一个基础工作变得高效、简单、且令人愉悦!因此可以说sca
随机来个数
2018/04/16
9730
Scala基础入门(十二 ) Scala 模式匹配
Scala 中提供了基于是否匹配某个条件来执行相应动作的模式匹配,这很类似其他语言的switch-case语句。
青山师
2023/05/04
1590
Scala学习笔记(一)
lazy val forLater = someTimeConsumingOperation()
小程故事多
2018/08/22
6260
Scala学习笔记(一)
Scala基础语法
摘 要 本文将详细介绍Scala的基础语法。 Scala的变量声明 package com.itunic.scala /**   * Created by ITUNIC on 2016/11/6.   */ object VariableDemo {   def main(args: Array[String]) { //使用val定义的变量值是不可变的,相当于java里用final修饰的变量     val i = 1 //使用var定义的变量是可变得,在Scala中鼓励使用val     var
天策
2018/06/22
6520
Spark基础-scala学习(一、入门)
Scala解析器的使用 REPL:Read(取值)-> Evaluation(求值)-> Print(打印)->Loop(循环)。scala解析器也被称为REPL,会快速编译scala代码为字节码,然后交给JVM执行 val result = 1 设置变量不可变 var result = 2 可变的变量 val name: String = null 声明变量类型 val name: Any = "leo" val name1,name2:String = null 声明多个变量 val num1,num2
老梁
2019/09/10
7350
相关推荐
2021年大数据常用语言Scala(十二):基础语法学习 方法调用方式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验