提案:向下分配

2021-04-02 05:28:31

自3.0以来已介绍了向右分配。说实话,我不是语法的大粉丝,因为它没有向Ruby添加新的维度。为什么不要将Ruby带到下一个维度?

此新语法拦截子表达式的中间值。在上面的示例中,捕获子表达2 * 3以var。

这段代码不是那么糟糕,但是在我脑海中的一些东西:将分配放入条件表达式真的很好吗?我担心它使循环条件不清楚。

不幸的是,难以在Ruby中保持状态。如果从条件中删除分配,则代码更不清楚如下。

考虑一下我们希望从数组中获取符合条件的最后一个元素。

ary = [1,2,3,4,5] ary.each {| elem |发现= Elem如果Elem.even? p找到#=> 4.

如您所知,此代码不起作用。我们需要添加找到的= nil来声明变量"找到"在外部范围内。但这是不可思议的脏污。

ary = [1,2,3,4,5] ary.each {| elem | elem如果elem.even? ^^^^ foundp找到#=> 4.

$ cat test.rbp(2 * 3 * 7)^^^^^ varp varwhile gets!= nil ^^^^行P线路确定= [1,2,3,4,5] ary.each {| | elem | elem如果elem.even? ^^^^ foundp找到#=> 4 $ echo -e" foo \ nbar" | ./miniruby test.rb426" foo \ n""酒吧\ n" 4

突然从^突然开始的线路目前无效。这就是为什么我选择"向下和#34;由于向上分配不兼容。

x = 1#以下是:Y = 2 ^ xy = 2 \ ^ xp x#> 1p y#=> 3.

$ cat test.rbp(2 * 3 * 7)^^^ ^^ var1 ^^^ var2p var1p var2 $ ./miniruby test.rbtest.rb:3:语法错误,意外' ^' ^' ^&#39 ;,期待输入结束^^^ var2

多么惊人,美丽和革命的想法!但是,使用extbar(u + 203e)而不是procepflex?它并不易于键入,它为代码带来了额外的清晰度和视觉愉快,同时消除了与现有语法冲突的任何可能性。

p(2 * 3 * 7)#=> 42 ~~~~~ varp var#=> 6puts("你好" +"世界")#=> HelloWorld ~~~~~~~x ~~~~~~~ x#=> "你好" p y#=> "世界"