提議:在Dotty 中使用縮進語法
我們知道,Haskell,Python,F# 等語言支持通過縮進而不是大括弧或者 start .. end 來劃分代碼塊。對於一部分程序,相比用大括弧來劃分代碼塊而言,使用縮進可能會使得代碼更加整潔。
Scala 之父 Odersky 提出了在 Dotty 中使用類似 F#,Haskell 語言縮進語法的提議。下面是新的語法的一些樣例:
方法定義
def f(x: Int)= n val y = x * x n y+ 1n
模式匹配
xs matchn case x :: xs1 => //...n case Nil => //...n
if ... else 表達式
if condition thenn println("taken")n xnelsen println("not taken")n yn
for 推導式
forn x <- xsn y <- ysnyieldn f(x, y)n
使用 with 關鍵字代替括弧作為類以及對象聲明的開始
object Obj withn class C(x: Int) withn def f = x + 3n def apply(x: Int) = new C(x)n
lambda 表達式中的 with 關鍵字
xs.map with x =>n x + 2nnxs.collect withn case P1 => E1n case P2 => E2n
鏈接:
Consider syntax with significant indentation · Issue #2491 · lampepfl/dotty
Consider syntax with significant indentation by odersky · Pull Request #2488 · lampepfl/dotty
推薦閱讀:
※Stack monads in Scala
※Scala快速入門-6-單例對象及伴生對象
※究竟使用什麼語言去計算?
※又是一道入群題(Scala)
※Dotty 開發環境搭建