Scala 趣題 22 函數重寫,位置參數,參數名

來源:互聯網
上載者:User

標籤:scala


  class C {    def sum(x: Int = 1, y: Int = 2): Int = x + y  }  class D extends C {    override def sum(y: Int = 3, x: Int = 4): Int = super.sum(x, y)  }  val d: D = new D  val c: C = d  c.sum(x = 0)  d.sum(x = 0)



Explanation


Scala uses the static type of a variable to bind parameter names, but the defaults are determined by the runtime type:


    The binding of parameter names is done by the compiler and the only information the compiler can use is the static type of the variable.

    For parameters with a default value the compiler creates methods which compute the default argument expressions (SLS §4.6). In the above example, both classes C and D contain the methods sum$default$1 and sum$default$2 for the two default parameters. When a parameter is missing, the compiler uses the result of these methods, and these methods are invoked at run-time. 


Scala 趣題 22 函數重寫,位置參數,參數名

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.