如何扩展Scala语法

C.A*_*A.B 1 syntax scala

扩展Scala语法的最佳方法是什么?例如,我想添加这样的东西(C++):

  int s = (1 > 2) ? 3 : 4;
Run Code Online (Sandbox Code Playgroud)

或(Python)的:

 var s = 0
 if 1 < 4:
     s = 3 + 5
 else:
     s = 8 - 9
 print(s)
Run Code Online (Sandbox Code Playgroud)

一般来说,我想添加一些有用的(为我的任务)语法构造,我会像scalac插件一样实现它,但似乎插件只适用于AST.

dhg*_*dhg 6

因为Scala中的if-else构造是一个表达式,所以在没有任何扩展的情况下可以非常接近:

scala> val s = if (1 > 2) 3 else 4
s: Int = 4
Run Code Online (Sandbox Code Playgroud)