侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

详解Ruby中的方法概念

技术  /  管理员 发布于 5年前   324

 Ruby方法跟其他编程语言中的函数非常相似, Ruby方法用于捆绑到一个单元中的一个或多个重复的语句。

方法名称应以小写字母开始。如果一个方法的名称以大写字母开始,Ruby可能会认为这是一个常数,因此可以正确解析调用。

方法应该定义Ruby的之前调用他们,否则会引发一个异常未定义的方法调用。
语法:

def method_name [( [arg [= default]]...[, * arg [, &expr ]])]  expr..end

所以,可以定义一个简单的方法如下:

def method_name   expr..end

可以表示方法,接受这样的参数:

def method_name (var1, var2)  expr..end

可以设置默认值,如果不传递所需的参数调用方法的参数将用于:

def method_name (var1=value1, var2=value2)  expr..end

无论何时调用方法很简单,只需写方法的名称如下:

复制代码 代码如下:method_name

然而,当调用一个方法带有参数,编写方法的名称以及参数,如:

复制代码 代码如下:method_name 25, 30

使用带参数的方法的最重要缺陷是,每当调用这些方法需要记住的参数个数。例如,如果一个方法接受三个参数传递只有两个,那么Ruby的将显示一条错误。
实例:

#!/usr/bin/rubydef test(a1="Ruby", a2="Perl")  puts "The programming language is #{a1}"  puts "The programming language is #{a2}"endtest "C", "C++"test

这将产生以下结果:

The programming language is CThe programming language is C++The programming language is RubyThe programming language is Perl

从方法中返回值:

在Ruby中的每一个方法返回默认值。这个返回值将是最后一个语句的值。例如:

def test  i = 100  j = 10  k = 0end

此方法被调用时,将返回的最后声明的变量k的值。
Ruby return 语句:

Ruby的return语句用于从一个Ruby方法返回一个或多个值。
语法:

复制代码 代码如下:return [expr[`,' expr...]]

如果有两个以上的表达式给出,数组包含这些值将返回值。如果没有表达式,将会是nil值返回。
实例:

 复制代码 代码如下:return

OR

return 12

OR

return 1,2,3

看看这个例子:

#!/usr/bin/rubydef test  i = 100  j = 200  k = 300return i, j, kendvar = testputs var

这将产生以下结果:

100200300

可变数目的参数:

假设声明一个方法需要两个参数。每当你调用这个方法,需要随着它传递两个参数。

但是Ruby允许声明与可变数目的参数的方法。让我们来看看这一个示例:

#!/usr/bin/rubydef sample (*test)  puts "The number of parameters is #{test.length}"  for i in 0...test.length   puts "The parameters are #{test[i]}"  endendsample "Zara", "6", "F"sample "Mac", "36", "M", "MCA"

在这段代码中,已经声明接受一个参数测试方法示例。但是,这个参数是一个可变参数。这意味着,这个参数可以在任意数量的变量。所以上面的代码将产生以下结果:

The number of parameters is 3The parameters are ZaraThe parameters are 6The parameters are FThe number of parameters is 4The parameters are MacThe parameters are 36The parameters are MThe parameters are MCA

类方法:

类定义之外定义一个方法时,该方法被默认标记为私有。另一方面,在类定义中定义的方为默认标示公有。可以改变默认可视性和私有标记的方法,由公共或私有的模块。

每当想访问一个类的方法,首先需要实例化的类。然后,使用对象可以访问任何类的成员。

Ruby提供了一种方法来访问的方法,没有实例化一个类。让我们来看看如何声明一个类的方法和访问:

class Accounts  def reading_charge  end  def Accounts.return_date  endend

看看方法return_date声明。声明随后的一个时期,这是其次的方法名与类名。可以直接访问这个类的方法如下:

Accounts.return_date

要使用这种方法,不需要创建对象之类的帐户。
Ruby alias 语句:

方法或全局变量的别名。别名不能被定义在方法体。方法aliase保持当前定义的方法,即使方法是覆盖。

为全局变量($ 1,$ 2,...)的取别名是禁止。覆盖内置的全局变量,可能导致严重的问题。
语法:

alias method-name method-namealias global-variable-name global-variable-name

例如:

alias foo baralias $MATCH $&

这里我们定义了foo的别名bar和$MATCH函数的别名$&
Ruby undef 语句:

这取消的方法定义。一个是undef不能出现在方法体中。

通过使用 undef 和 alias, 可以从超类独立修改类的接口,但注意到这可能被打破程序由内部自行的方法调用。
语法:

复制代码 代码如下:undef method-name

实例:

取消定义bar方法,如下:

undef bar


  • 上一条:
    PHP类中Static方法效率测试代码
    下一条:
    PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 2024.07.09日OpenAI将终止对中国等国家和地区API服务(0个评论)
    • 2024/6/9最新免费公益节点SSR/V2ray/Shadowrocket/Clash节点分享|科学上网|免费梯子(1个评论)
    • 国外服务器实现api.openai.com反代nginx配置(0个评论)
    • 2024/4/28最新免费公益节点SSR/V2ray/Shadowrocket/Clash节点分享|科学上网|免费梯子(1个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-07
    • 2017-08
    • 2017-09
    • 2018-01
    • 2018-07
    • 2018-08
    • 2018-09
    • 2018-12
    • 2019-01
    • 2019-02
    • 2019-03
    • 2019-04
    • 2019-05
    • 2019-06
    • 2019-07
    • 2019-08
    • 2019-09
    • 2019-10
    • 2019-11
    • 2019-12
    • 2020-01
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2020-10
    • 2020-11
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-12
    • 2024-02
    • 2024-04
    • 2024-05
    • 2024-06
    • 2025-02
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客