在多篇帖子看到很多人把 map
/ reduce
称为语法糖,有些迷惑。加上大部分人对 Scala / Kotlin 等充满误解。
所以想调查下对于 V 友们来说,在 Scala 中什么样的语法是你们认为的语法糖?
先列举几个我知道的可能是糖的东西:
(123, "str")
-> Tuple 的括号写法[T : Encoder]
-> type class 用法match case
+ unapply
-> 模式匹配的解构...等等
不知道还有哪些是 V 友认为的语法糖?
感谢 #4 楼补充
1
Jooooooooo 7 天前
我认为语法糖应该是某种通用写法很常见, 所以用另外一种更简便的写法替代.
举个例子, java 里的 for(People p : peoples) 就是一种语法糖, 为了简化 for(i=0; i<peoples.size(); i++) 而搞. 为什么会做出这种语法糖, 因为后者十分常见, 所以就搞了前面那种更方便 /更易读的写法. 另外一方面, 遍历一个集合有前面这种简便的写法, 而每隔一个元素遍历就没有(至少我不知道), 应该就是这种写法不够常见吧 这有点点像语言里的缩写 |
2
TWorldIsNButThis 7 天前 ![]() 除了 C 的语法其他都是语法糖!
高阶函数都能称为语法糖也是没谁了 |
3
weiwen 7 天前
声明变量的语法糖:
val x = 123 声明类的语法糖: case class C(x: Int, y: String) 这样的语法糖数不尽数,垃圾 Scala! |
4
billlee 7 天前 ![]() infix notation -> 方法调用
== -> equals |
![]() |
5
zhuangzhuang1988 7 天前
多。
|
![]() |
6
zhusimaji 7 天前 via iPhone
这糖真甜
|
7
zmal 7 天前 via iPhone
非常非常非常非常多
|
8
zmal 7 天前 via iPhone
可以这样定义:语法糖反编译以后是另一种比较啰嗦的写法。
|
9
ymmud 7 天前
写起来还是很舒适的,可惜工作不给用
|
10
lmshl OP @zhuangzhuang1988 有哪些呢?能否举例?
|
12
lmshl OP @zmal
可以这样定义:语法糖反编译以后是另一种比较啰嗦的写法。 =============================================== 如果这么说的话,Scala 岂不是除了 implicit / for comprehension / match case 之外,就无糖了? |
![]() |
14
AoEiuV020CN 7 天前
我觉得 java 的 stream.map 不算语法糖,
但 kotlin 那种直接给 list 加上 map 方法这种拓展就算语法糖了, |
15
lmshl OP @AoEiuV020CN Method Extensions ,算是应用比较广泛的语法糖了。Kotlin / Rust / C# / Scala 3 都有 first-class 支持
|
![]() |
16
ericgui 7 天前
说是 scala 在国内在衰落,是吗?
|
17
lmshl OP @ericgui 是的,虽然是我们的钓鱼贴,我也回答了一下这个问题,https://www.zhihu.com/question/527828083/answer/2443925217
|
19
lmshl OP @Fuxixixi 这方面和 kotlin / groovy / clojure 一样,都能白嫖 Java 的生态。不同的是从 Java 调用 其他语言难易程度有区别。
Java 调用 Kotlin 最容易,调 Scala 比较难,其他的可能会更难。 |
20
Pangurban 6 天前
个人认为一个有趣的语法糖:???
实际上是 predef 里面的一个函数,名字就是 3 个问号: ``` def ??? : Nothing = throw new NotImplementedError ``` Nothing 是所有类型的子类,所以可以用在任何地方而不会报错 |
![]() |
22
hepin1989 6 天前
那根本不是糖,那叫做蜂蜜
|