Ruby 2.4

Miscellaneous Syntax

其他语法

结束表达

Ruby 使用换行符作为表达式的结尾。当用操作符结束一行时,打开括号,逗号等等,表达式将继续。

您可以用;(分号)结束表达式。分号经常使用ruby -e

缩进

Ruby 不需要任何缩进。通常,ruby程序缩进两个空格。

如果您在运行 ruby 时启用了警告并且缩进不匹配,您将收到警告。

alias

alias关键字是最常用的别名的方法。在对方法进行别名时,可以使用其名称或符号:

alias new_name old_name alias :new_name :old_name

对于方法,通常可以使用 Module#alias_method 来代替alias

您也可以使用alias别名全局变量:

$old = 0 alias $new $old p $new # prints 0

您可以在任何范围内使用alias

undef

undef关键字防止电流类从响应调用指定的方法。

undef my_method

您可以使用符号而不是方法名称:

undef :my_method

你可以解开多个方法:

undef method1, method2

您可以undef在任何范围内使用。另请参阅模块#undef_method

defined?

defined? 是一个返回描述其参数的字符串的关键字:

p defined?(UNDEFINED_CONSTANT) # prints nil p defined?(RUBY_VERSION) # prints "constant" p defined?(1 + 1) # prints "method"

您不需要使用括号defined?,但由于其优先级低,因此推荐使用defined?

例如,如果你想检查一个实例变量是否存在,并且实例变量是零:

defined? @instance_variable && @instance_variable.zero?

这会返回"expression",如果未定义实例变量,这不是您想要的。

@instance_variable = 1 defined?(@instance_variable) && @instance_variable.zero?

在检查实例变量是否定义时添加括号是更好的检查。nil当实例变量未定义且false实例变量不为零时,这会正确返回。

使用特定的反射方法,如 instance_variable_defined?例如变量或 const_defined?对于常量而言,比使用更不容易出错defined?

BEGIN 和 END

BEGIN定义在当前文件中的任何其他代码之前运行的块。它通常用于单线和ruby -e。同样END定义一个在任何其他代码之后运行的块。

BEGIN必须出现在顶层,END在方法内使用时发出警告。

这里是一个例子:

BEGIN { count = 0 }

你必须使用{}你可能不会使用doend

这是一个示例单线程,它将标准输入或参数列表中的任何文件的数字相加:

ruby -ne 'BEGIN { count = 0 }; END { puts count }; count += gets.to_i'