如题, 比如模仿下 python~~~
update --- 本人是 smalltalk 的 big fan, 近几天才开始研究 ruby; 之前偶然看到一本 "metaprogramming ruby", 才抛开了比较狭隘的民族主义情节,学习下 ruby.
其实这个问题提的比较蛋疼,只是我有点强迫症,总喜欢简单,再简单。
关于具体的语法,我更喜欢 类似于 obj message 的 smalltalk 消息语法。ruby 属于随大流,非要用 '.', 其实也有点不爽,不过没办法,主流嘛。
还有类似 obj message:parameter 的语法,除了 smalltalk, 还真不见别的语言有这样的简洁性了和表达能力。不过这都是表皮,ruby 的魂还是十分 smalltalk 的,灰常的接近。
@xds2000 兄弟给了一个可能的解决方案:http://lazibi.rubyforge.org/index.html ps:记不得 markdown 语法,各位见谅。
这个啊~ 是仁者智者的问题啦,比如我对 Python 的强制缩进比较的不喜欢。对 Ruby 的 end 感觉还可以啊。本来就是萝卜和青菜嘛,呵呵。就像 Emacs 和 Vi,Gnome 和 KDE,各自都有其眷属。只能代表各自的喜好而已 :>
@skandhas 是的,呵呵; 我是个懒人,总觉得能省就省。ruby 的方法调用可以省略括号,觉得大爱啊。要是能支持 smalltalk 款式的参数列表就更 high 了~(本人其实是 ios 程序员:)
ruby 学习缩进语法,挺好的倡议。楼主听有创意。 可以用用这个库,实现 Python style indenting in Ruby. http://lazibi.rubyforge.org/index.html
为什么不喜欢 end 呢?
我曾经倒是想过,用 lisp 的风格来写 Ruby 中的代码块,不过和 Lisp 括号比起来, 阅读效果差好多了。
下面是代码示例,你们看看不用 end 晕不晕。
File.open("1.txt") {|f|
f.each_line {|line|
line.each_char {|char|
print char.upcase}}}
最主要是没有 lisp 括号那种对称美.Matz 是 lisp 的绝顶高手,他绝对想过这种方式。
@zw963 嗯,可能是习惯问题。我也是最近才开始研究 ruby, 因为我是 smalltalk 的粉丝,而 ruby 是相对主流的语言里面最像 smalltalk 的,呵呵
不管是 ruby 的 end,还是 python 的缩进,还是 C++ 等的大括号,都不影响对语言的选择,可能是本身水平太低,风格还没到影响心情的地步。
看图更直观
有 end
module Showbuilder
module Builders
class ModelListBuilder
module ShowColumns
def show_text_column(*methods)
self.show_method_column(methods) do |value|
self.safe_html_string(value)
end
end
def show_time_column(*methods)
self.show_method_column(methods) do |value|
self.time_string(value)
end
end
def show_date_column(*methods)
self.show_method_column(methods) do |value|
self.date_string(value)
end
end
end
end
end
end
没有 end
module Showbuilder
module Builders
class ModelListBuilder
module ShowColumns
def show_text_column(*methods)
self.show_method_column(methods) do |value|
self.safe_html_string(value)
def show_time_column(*methods)
self.show_method_column(methods) do |value|
self.time_string(value)
def show_date_column(*methods)
self.show_method_column(methods) do |value|
self.date_string(value)
没 end,我担心读代码的时候,会让程序员产生疑惑(完了吗,完了吗,真的完了吗)。 但是,我觉得没有 end,代码少了好几行,挺酷的。 相对与 end,我更喜欢,强制缩进。 我没用过 pyhon,所以不能多说什么。
end 比 objectc 的 [] 好,那个写起来真叫人晕,多搞两层方法就分不清哪和哪了。 说实话,ruby 和 python 的风格都不怎么喜欢,还是喜欢 c 的{ 号。
end 绝对是 ruby 优雅性的重要体现。就像当年我很喜欢的 Object Pascal. Ruby 也绝对是个魔鬼,一个如此优雅的语言,却这么灵活多变...
一直以来对{...}
和end
蛮抗拒的,搞得后来我特崇拜开发编辑器的人
下面的图片来自:http://weibo.com/1679991957/xCmEAetmU
我恰恰觉得这是 ruby 比 python 好的地方,可能一开始写一些小东西不觉得,一旦函数变成几个屏幕长,这时候也没有明确的匹配标号来进行跳转,代码的层次很容易分不清。
如果我设计一门语言,一定是强制缩进 + end 结束块。
#23 楼 @jinleileiking #26 楼 @hhuai 估计 matz 当时也想设计成{},但后来由于{}被用到 lambda 里的,就选了 end。 end 我觉得还好,惟一不爽的是你把光标放到 end 上不能高亮开头的 do。 而 ()[]{}一般都能自动高亮另一半。哪位有办法吗?
@tylr @sevk 没去想过.. 记得缩进线的方案找到我都没配成功,这个就.. 要不还是求助图片作者的微博 http://weibo.com/1679991957/xCmEAetmU
搭一个用 html 排的图片 http://huaban.com/pins/3532086/zoom/
------------------- updated :: 04:30 做了一个在线编辑器玩,大概是这个样子,输入的时候就是列表的格式在运行 http://docview.cnodejs.net/test_ideas/code_blocks/html.html?html
木有 end 的语言里 gg=G 会杯具爆浆的...
不过有时候想,如果让 ruby 社区重新发明一遍 ruby 的话该也是 coffeescript 的那种样子吧...
Emacs 可以跳转到对应的 do 前面的方法。
我自己定义的快捷键,按着 Ctrl 和 Alt 不放,一个快键跳到前面,一个快键跳到后面。
这个逻辑在 Emacs 中有现成的方法可用,ruby-beginning-of-block, ruby-end-of-block, 加高亮实现很简单,只不过按两下快键就知道在哪里了,没有任何必要而已。
... 终于给等到了... 最后一次更新是 5 months ago... EndLess Ruby https://github.com/pasberth/EndlessRuby/tree/dev 不知道跑不跑的起来.. 明天看看
没有万能的东西,每一种东西都有它的设计哲学和设计理念,以及设计的初衷。 这个没有什么好比的。 你的产品不可能满足所有用户,每个用户也都有自己的喜好。 用一种东西,就要以他的哲学来思考,来应用,否则你会很痛苦,很纠结,那是你用错了,至少的方式有问题,任何东西都不是橡皮泥,先怎么就怎么。