在 GitHub 上編輯此頁面

命名型參數 - 更詳細的資訊

在本節中,我們將提供有關 命名類型引數 (實驗性) 的更多詳細資料。

語法

語法新增部分

SimpleExpr1       ::=  ...
                    |  SimpleExpr (TypeArgs | NamedTypeArgs)
NamedTypeArgs     ::=  ‘[’ NamedTypeArg {‘,’ NamedTypeArg} ‘]’
NamedTypeArg      ::=  id ‘=’ Type

特別注意,命名引數無法傳遞給類型建構函式

class C[T]

val x: C[T = Int] = // error
  new C[T = Int] // error

class E extends C[T = Int] // error

相容性考量

命名類型引數不會影響二進位相容性,但會影響原始碼相容性:如果方法類型參數的名稱已變更,任何現有的命名參照都會中斷。這表示方法類型參數的名稱現在是程式庫公開 API 的一部分。

(未實作的建議:為了減輕此問題,scala.deprecatedName 可以擴充,以適用於方法類型參數。)