首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Miscellaneous Syntax

结束表达

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

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

缩进

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

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

alias

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

代码语言:javascript
复制
alias new_name old_name
alias :new_name :old_name

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

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

代码语言:javascript
复制
$old = 0

alias $new $old

p $new # prints 0

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

undef

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

代码语言:javascript
复制
undef my_method

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

代码语言:javascript
复制
undef :my_method

你可以解开多个方法:

代码语言:javascript
复制
undef method1, method2

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

defined?

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

代码语言:javascript
复制
p defined?(UNDEFINED_CONSTANT) # prints nil
p defined?(RUBY_VERSION)       # prints "constant"
p defined?(1 + 1)              # prints "method"

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

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

代码语言:javascript
复制
defined? @instance_variable && @instance_variable.zero?

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

代码语言:javascript
复制
@instance_variable = 1
defined?(@instance_variable) && @instance_variable.zero?

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

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

BEGINEND

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

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

这里是一个例子:

代码语言:javascript
复制
BEGIN {
  count = 0
}

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

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

代码语言:javascript
复制
ruby -ne 'BEGIN { count = 0 }; END { puts count }; count += gets.to_i'

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com