`
yjjxf
  • 浏览: 42061 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Ruby 方法的访问控制

    博客分类:
  • Ruby
阅读更多

  Ruby要改变一个对象的内部状态,唯一的简单方式就是调用它的方法。控制对方法的访问,就可以控制对对象访问。Ruby
 提供了三种访问控制方式:
    public 方法可以被任何人调用,没有限制访问控制。方法默认是public的(除initialize外)
   
    protected 方法只能被定义了该方法的类或其子类的对象所调用。这个家族均可访问
   
    private 方法不能被明确的接收者调用,其接受者只能self。这个私有方法只能在当前对象的上下文中被调用。
   
    注意:访问控制是在程序运行的时候动态判定的,而非静态判定,只有当代码试图执行受限制的方法,才会抛出异常。
    我们通过public、protected、private三个函数来为类或模块定义内的方法指定访问级别。这里有两种方式使用函数:
     1、使用时没有参数

ruby 代码
  1. class Test   
  2.      
  3.   public   
  4.      def method1   
  5.     .......   
  6.      end  
  7.   
  8.  private   
  9.      def method2   
  10.     ........   
  11.     end  
  12.   
  13. protected   
  14.      def method3   
  15.     ........   
  16.     end  
  17.   
  18. end  


     2、通过将方法名作为参数列表传入控制访问函数来设置访问级别。

ruby 代码
  1. class Test      
  2.      
  3.     public :method1      
  4.     private :method2      
  5.    protected :method3      
  6. end    
分享到:
评论

相关推荐

    action_access, 面向 Ruby on Rails的访问控制系统.zip

    action_access, 面向 Ruby on Rails的访问控制系统 操作访问 动作存取为模块,concise concise,真正收费使用访问控制系统的Access 。 它允许安全地保护应用程序和处理权限。关注当前用户可以访问的操作,而不是干扰...

    Ruby学习笔记(学习心得)

    Ruby学习笔记 01 类的属性与方法 02 访问控制 03 Container(Array/Hash) 04 Iterator 05 简单数据类型 06 范围 07 方法 08 条件控制 09 异常处理

    kibana3_auth, Frankenstein ruby/rack 应用程序向kibana3添加访问控制.zip

    kibana3_auth, Frankenstein ruby/rack 应用程序向kibana3添加访问控制 Kibana 3身份验证和授权简介这个 rack 应用程序是为了提供一个非常特殊的用途: 向kibana3添加身份验证,并允许用户只查看它的日志。...

    非常好的Ruby中文版项目资源,分享出来.zip

    这是 Ruby User’s Guide的简体中文版本:Ruby用户指南。...访问控制 单例方法 模块 过程对象 变量 全局变量 实例变量 局部变量 类常量 异常处理:rescue 异常处理:ensure 访问器 对象初始化

    学习Ruby_11961032.pdf

    ruby自学笔记,里面包含了笔者学习心得 元素的过滤 使用场景:数组中元素都是有各自的索引位置,有时候我们想人为的控制某个元素的索引编号,或者不想使用某个索引编号,可以在数组中加入nill来占位 数组的....

    Ruby菜鸟入门指南.md

    5. Ruby中"一切皆方法调用",没有直接访问属性的方式,只有方法调用。 6. 变量命名约定,如局部变量、常量、实例变量、类变量等。 7. 方法命名约定,如?结尾表示返回布尔值,!结尾表示会修改对象。 8. 块(Block)的...

    ruby-buzz:一个仅Linux的ruby库,用于控制Buzz控制器中的灯光

    仅Linux 仅限有线蜂鸣器控制器警告: ruby_buzz必须在Linux的/ sys和/ dev文件夹中更改一些权限,才能访问内核。 系统将要求您输入密码才能使用ruby_buzz。示例脚本scripts文件夹包含蜂鸣控制器的输入和输出功能的...

    libusb:通过libusb-1.x从Ruby访问USB设备

    从Ruby访问USB设备 LIBUSB是Ruby绑定,可让Ruby程序员访问任意USB设备。 是一个库,可以完全访问通过USB总线连接的设备。 因此,不需要特殊的内核驱动程序即可访问USB设备。 此Ruby绑定支持的API版本1.0。 请注意...

    Ruby on Rails的授权Gem。-Ruby开发

    屏幕录像2 CanCanCan是Ruby和Ruby on Rails的授权库,它限制了给定用户可以访问的资源。 所有权限都可以在一个CanCanCan Wiki中定义。 RDocs | 截屏视频1 | 屏幕录像2 CanCanCan是Ruby和Ruby on Rails的授权库,它...

    Ruby on Rails Web开发之旅.pdf【第二部分】

    本书注重实用性,适合初学者迅速掌握Ruby开发工具的使用方法,为希望深入了解Rails框架并建立健壮网络应用的开发人员提供强大的技术支持。 目录 第1章 Ruby on Rails简介 1.1 历史 1.2 开发原则 1.2.1 惯例优先 ...

    Ruby on Rails Web开发之旅.pdf【第一部分】

    本书注重实用性,适合初学者迅速掌握Ruby开发工具的使用方法,为希望深入了解Rails框架并建立健壮网络应用的开发人员提供强大的技术支持。 目录 第1章 Ruby on Rails简介 1.1 历史 1.2 开发原则 1.2.1 惯例优先 ...

    Ruby on Rails Web开发之旅.pdf【第三部分】

    本书注重实用性,适合初学者迅速掌握Ruby开发工具的使用方法,为希望深入了解Rails框架并建立健壮网络应用的开发人员提供强大的技术支持。 目录 第1章 Ruby on Rails简介 1.1 历史 1.2 开发原则 1.2.1 惯例优先 ...

    剖析 rudy 访问控制

    这一节我们介绍访问控制(access controls). 想想当我们在”最高层”而不是在一个类的定义里定义一个方法时会发生什么.我们可以把这样的方法设想为在像C那样的传统语言中的函数的类似物. ruby> def square(n) | ...

    socket2:Ruby 中的第 2 层原始数据包操作

    这个单文件的纯 Ruby 类提供了一种替代方法:在没有像 libpcap 这样的中介的情况下访问数据链路(以太网)层的原始套接字。 依赖关系 没有任何。 平台 Linux Ruby 1.9 执照 麻省理工学院 例子 require_relative '...

    chain:通过 Ruby 中的方法链访问 API 端点

    因此,您可以完全控制如何解析请求和响应并将其映射到 Ruby 中的对象! 它是如何工作的? 只需实例化Url类,然后将一系列表示 URL 路径的方法链接在一起。 以一声巨响结束链条以启动请求。 例如: >> require '...

    action_args:Rails 3+和Ruby 1.9+的控制器动作参数参数化程序

    find id endend 当请求访问“ / users / 777”时,它将调用UsersController#show并将777作为方法参数。 这使您能够以一种完全自然的Ruby方式明确声明该操作最重要的API(在控制器操作中使用了params Hash的哪些成员...

    sketchup-ruby-api-tutorials:SketchUp Ruby API教程和示例

    在您的计算机上获取代码,并附带所有注释,以方便访问。 将其用作注释,代码段等的快速参考。 分叉的。 对于只想快速查看代码并继续前进的人们来说,这很方便。 您可以轻松地从未注释的示例中复制和粘贴代码块,而...

    简单谈谈Ruby的private和protected

    Ruby类下对访问控制的限制也是用public,protected和private来做的。虽然用的是和C++和Java相同的名字,但是Ruby下的protected和private定义还是有所不同的。

    lite:lite是一个用ruby编写的web框架和orm

    这些单独的路由中的每一个都采用HTTP动词(获取,发布,放置或删除),正则表达式形式的路径,将实例化以处理该请求的控制器的名称以及在该控制器上调用的方法 Router . new . draw do get Regexp . new ( '^\/

Global site tag (gtag.js) - Google Analytics