首頁>技術>

翻譯Scala 3 新特性系列文章, 這一篇是講Scala 3 的 上下文抽象, 官方用了Opinionated的這個詞, 文面上意思:自以為是, 我覺得翻譯為 自傲 更合適, 一方面,很驕傲別人沒有, 我有, 另外一方面, 我比以前更強大了, 所以翻譯成: 自傲的上下文抽象

Scala的一個基本的核心概念是(現在在某種程度上仍然是)為使用者提供一小套強大的功能,這些功能可以組合成巨大的(有時甚至是不可預見的)表現力。例如, implicits(隱式轉換) 這個特性已經被用來模擬上下文抽象、表達型別級計算、模擬型別類、執行隱式強制、編碼擴充套件方法等等。從這些用例中學習,Scala 3採用了一種稍有不同的方法,關注意圖而不是機制。Scala 3沒有提供一個非常強大的功能,而是提供了多個量身定製的語言功能,允許程式設計師直接表達他們的意圖。

提取上下文資訊 使用子句可以讓程式設計師抽象出調用上下文中可用的、應該隱式傳遞的資訊。作為對Scala 2 implicits的改進,[Using clauses ]using子句可以透過型別來指定,將函式簽名從從未明確引用的術語變數名中解放出來。提供型別類例項 [Given instances ] 給定例項允許程式設計師定義某個型別的規範值。這使得使用型別類的程式設計更加直接,而不會洩露實現細節。追溯性擴充套件類。在Scala 2中,擴充套件方法必須使用隱式轉換或隱式類進行編碼。相比之下,在Scala 3中,[extension methods ] 擴充套件方法現在直接內建到語言中,從而導致更好的錯誤資訊和改進的型別推理。將一個型別視為另一個型別。[Implicit conversion] 隱式轉換從頭開始被重新設計為型別類Conversion的例項。更高階的上下文抽象。[context functions ]上下文函式的全新功能使上下文抽象成為一流的公民。它們是庫作者的重要工具,允許表達簡潔的特定領域語言。來自編譯器的可操作反饋。[import suggestions ]如果一個隱式引數不能被編譯器解決,它現在為你提供可能解決問題的匯入建議。

上面括號內,是核心術語的英文源文, 翻譯在源文的後面,所以大家可以對照著看

14
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Oracle 宣佈GraalVM 支援COBOL 程式語言