美文网首页
Scala 方法的中缀表示法、后缀表示法

Scala 方法的中缀表示法、后缀表示法

作者: 锕456 | 来源:发表于2017-09-15 20:09 被阅读57次

    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参调用示例应用:

    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 有一种特殊的方法调用只有一个参数的方法。

    // 推荐使用
    a + b
    
    // 有效,但是可读性不好
    a+b
    
    // 有效, 但是给人感觉很奇怪
    a.+(b)
    

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

    // 推荐使用
    names.mkString(",")
    
    // 有时候也会看到使用; 但是有争议
    names mkString ","
    

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

    // 比较常见
    a max b
    

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

    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();就是后缀表示法。

    相关文章

      网友评论

          本文标题:Scala 方法的中缀表示法、后缀表示法

          本文链接:https://www.haomeiwen.com/subject/avsesxtx.html