来聊聊编程语言中那些让你觉得被惊呆了的特性

2013-08-29 12:05:16 +08:00
 sethverlo
Python:

1. if 1 < a < 3

2. return a, b, c

3. a, b = b, a

Ruby:

1. a.try(:b) # 如果 a == nil 就直接返回 nil 而不会告诉你 nil 没有方法…

2. a.nil? # 这种带问号的方法

3. a ||= b # 相当于 if !a.nil? then a = b end
5140 次点击
所在节点    问与答
53 条回复
celon
2013-08-30 11:27:34 +08:00
直接用Java代码去操纵一个class的字节码,改变行为。
angelface
2013-08-30 11:32:54 +08:00
@mengzhuo 和ruby的一比,就不神了。
timonwong
2013-08-30 11:36:28 +08:00
@mengzhuo
Welcome to the Scala world...

还有两个C++反例:
boost.spirit
boost.xpressive
yaroot
2013-08-30 11:42:16 +08:00
@sethverlo

2. return a, b, c

3. a, b = b, a

我说这2个特性是一样的..
sethverlo
2013-08-30 11:49:39 +08:00
@yaroot 当然不一样啊…

def foo(): return a, b, c

然后就可以 a, b, c = foo()
yaroot
2013-08-30 11:53:04 +08:00
@sethverlo 都是tuple
sethverlo
2013-08-30 11:53:40 +08:00
@yaroot 这么说的话确实是……
mengzhuo
2013-08-30 14:43:22 +08:00
@angelface

Ruby也有+-<> in with 重载?连iter对象都可以重载?

大Python还有groupby,OTZ不得不再拜一下。
mengzhuo
2013-08-30 14:46:53 +08:00
@angelface 看了一下,也可以,只是程序可读性下降得厉害啊

def *

这个……
plprapper
2013-08-30 16:09:07 +08:00
@zencoding a:b?c 这个。。。 是a?b:c 吧
tioover
2013-08-30 16:51:45 +08:00
Y组合子和meta programming
angelface
2013-08-30 17:17:24 +08:00
@mengzhuo 还好吧, 还可以def >> def ]] def [] def + def .....
mouer
2013-08-30 18:10:37 +08:00
haskell 斐波那契数列 fibs = 1 : 1 : zipWith (+) fibs (tail fibs)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/80619

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX