ruby创建某些“关键字”方法别名的语法

    begin和end是ruby的关键字,但是Range中也有名称为begin和end的实例方法。现在问题来了:怎么创建它们的别名方法?

    如果用class Range;alias begin_x begin end是不行的,ruby以为后面一个begin是某个语法块的开头啊:

2.1.2 :089 > class Range;alias begin0 begin end

2.1.2 :090?>   

用class Range;alias begin_x "begin" end也不行,用alias begin_x :begin还是不行!

2.1.2 :083 > class Range

2.1.2 :084?>   alias begin0 :begin

2.1.2 :085 >       end

2.1.2 :086?>   end

SyntaxError: (irb):86: syntax error, unexpected keyword_end, expecting end-of-input

from /Users/apple/.rvm/rubies/ruby-2.1.2/bin/irb:11:in `<main>'

2.1.2 :087 > class Range;alias begin0 "begin" end

SyntaxError: (irb):87: syntax error, unexpected tSTRING_BEG

class Range;alias begin0 "begin" end

                          ^

from /Users/apple/.rvm/rubies/ruby-2.1.2/bin/irb:11:in `<main>'

没法子了吗?我突然想到了这个语法:alias begin_x :"begin",这回哦鸟!同样的end方法类似。

时间: 2024-11-28 20:08:36

ruby创建某些“关键字”方法别名的语法的相关文章

Ruby创建“关键字”同名方法别名的方法_ruby专题

begin和end是ruby的关键字,但是Range中也有名称为begin和end的实例方法.现在问题来了:怎么创建它们的别名方法? 如果用class Range;alias begin_x begin end是不行的,ruby以为后面一个begin是某个语法块的开头啊: 复制代码 代码如下: 2.1.2 :089 > class Range;alias begin0 begin end 2.1.2 :090?>   用class Range;alias begin_x "begin

Ruby中的钩子方法详解

  这篇文章主要介绍了Ruby中的钩子方法详解,本文讲解了什么是钩子方法.included.Devise中的 included.extended.ActiveRecord中的 extended.prepended.inherited等内容,需要的朋友可以参考下 Ruby的哲学理念是基于一个基本的要素,那就是让程序员快乐.Ruby非常注重程序员的快乐,并且也提供了许多不同的方法来实现它. 它的元编程能力能够让程序员编写在运行时动态生成的代码.它的线程功能使得程序员有一种优雅的的方式编写多线程代码.

使用symfony命令创建项目的方法_php实例

本文实例讲述了使用symfony命令创建项目的方法.分享给大家供大家参考,具体如下: 概况 这一章节描述一个Symfony项目的合理结构框架,并且用 symfony 命令初始项目结构. 介绍 在symfony里,一个项目是一个指定域名下的一组服务和有效操作,共享相同的项目模型. 在一个项目里面,应用中的操作是一组逻辑:每个应用都可以正常的独立运行,与相同项目中的其他应用互不干涉. 在多数情况中,一个项目会包含两个应用,一个负责前台显示,一个负责后台处理,使用相同的数据库.当然你也可以在一个项目中

ruby对象的初始化方法

前面一节的 Fruit 类有两个实变量,分别表述水果的类型和状态.直到为这个类写了一个定制的inspect方法,我们方才了解它不会对一个缺乏属性的水果做出合理的解释.幸运的是,Ruby提供了一种允许实变量总是被初始化的方法. initalize方法 当Ruby创建一个新对象时,它总是会寻找一个名为 initialize 的方法并执行它.因此,我们可以简单通过一个initialize方法向实变量中加入缺省值,这样一来, inspect方法就有东西可说了. ruby> class Fruit | d

SQL SERVER 重组含有特殊字符的索引时遇到“关键字 &#039;with&#039; 附近有语法错误.”

案例描述     这是在索引重组过程中遇到的有意思的错误案例,搜索了一下也没有看到相关资料,估计我第一个碰到这类错误的人(It's just a joke).具体情况是YourSQLDba在做维护数据库索引时遇到了索引重组错误,然后我排查时就发现了这个案例.我下面用一个简单的测试例子演示一下具体情况.   数据库版本: SQL SERVER 2005 CREATE TABLE TEST   (   ID     INT,   Name   VARCHAR(12)   );   CREATE NO

实例讲解Ruby中的钩子方法及对方法调用添加钩子_ruby专题

钩子方法有些类似事件驱动装置,可以在特定的事件发生后执行特定的回调函数,这个回调函数就是钩子方法(更形象的描述: 钩子方法可以像钩子一样,勾住一个特定的事件.),在Rails中before\after函数就是最常见的钩子方法. Class#inherited方法也是这样一个钩子方法,当一个类被继承时,Ruby会调用该方法.默认情况下,Class#inherited什么都不做,但是通过继承,我们可以拦截该事件,对感兴趣的继承事件作出回应. class String def self.inherit

SQL SERVER 重组含有特殊字符的索引时遇到&amp;ldquo;关键字 &#039;with&#039; 附近有语法错误.&amp;rdquo;

原文:SQL SERVER 重组含有特殊字符的索引时遇到"关键字 'with' 附近有语法错误." 案例描述     这是在索引重组过程中遇到的有意思的错误案例,搜索了一下也没有看到相关资料,估计我第一个碰到这类错误的人(It's just a joke).具体情况是YourSQLDba在做维护数据库索引时遇到了索引重组错误,然后我排查时就发现了这个案例.我下面用一个简单的测试例子演示一下具体情况.   数据库版本: SQL SERVER 2005 CREATE TABLE TEST

python类:class创建、数据方法属性及访问控制详解_python

在Python中,可以通过class关键字定义自己的类,然后通过自定义的类对象类创建实例对象. python中创建类 创建一个Student的类,并且实现了这个类的初始化函数"__init__": class Student(object):     count = 0     books = []     def __init__(self, name):         self.name = name 接下来就通过上面的Student类来看看Python中类的相关内容. 类构造和

PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间_php实例

PHP前言: •动态地创建属性和方法 •对象的复制 •对象的比较 •加载指定的文件 •自动加载类文件 •命名空间 示例 1.类的相关知识点 3(动态地创建属性和方法) class/class3.php <?php /** * 类的相关知识点 3(动态地创建属性和方法) */ // 用于演示如何动态地创建属性(这就是 php 中所谓的重载) class Class1 { // __set 魔术方法,当设置的属性不存在或者不可访问(private)时就会调用此函数 public function _