Ruby是一种美丽的语言,但有一个关键词"结束",我讨厌写很多次.有没有什么方法可以编写简洁的代码而不必每次都写"结束"?
Dig*_*oss 10
好吧,这部分是无响应的,但最初begin ... end是范例.和原来,我的意思是你或我从来没有见过的语言; 像Algol这样有趣的名字.有些语言(FORTRAN,Basic)多年来只有单一语句条件错开.
然后是C,后来,Java出现并接管了这个世界.他们有{..}.那还不错.
Python和其他一些(包括我在Python发明之前写的一个微代码汇编程序)已经尝试使用缩进来进行块结构.很好的解决方案,但显然它不是那么受欢迎.
所有这些都有效,但存在各种问题.
信不信由你,Ruby的语法设计毫无疑问涉及到所有这些其他不完美的死胡同的考虑.
我的建议是:再给它一次机会.
Ruby融合了开创性和技术上的崇拜,Smalltalk并且Lisp具有实用性和实用性Perl.无论出于何种原因,Smalltalk和(((Lisp)))在30年和55年内都没有成功,粗略地说,Perl正在消失.Ruby是迄今为止最流行的最先进的语言.
未来是Ruby(以及Python和JavaScript)和人们喜欢Ruby有一个原因.其中一个原因是真正用户友好的语法.
相信我,替代方案更糟糕.
继续尝试!
实际上你根本不需要end写Ruby来编写Ruby:
Foo = Class.new {
define_method(:bar) {
puts "I don't recommend this"; \
return 42 \
if (:what_is_going_on?)
}
}
Foo.new.bar # => 42
Run Code Online (Sandbox Code Playgroud)
期待其他Rubyist读取你的代码,想知道你的想法是什么,但......
没有任何可能性的另一种可能性end取代end了你最喜欢的角色所有可怕的:
# encoding: utf-8
define_singleton_method(:_){|code|
eval(code.gsub("?", "e\156d"))
}
_ <<-EOC
class Foo
def bar
if :what_is_going_on?
puts "I don't recommend this either"
return 42
?
?
?
p Foo.new.bar # => 42
EOC
Run Code Online (Sandbox Code Playgroud)
或者_用您自己的解析器替换,end根据缩进生成s!