`
trace
  • 浏览: 125523 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ruby方法调用中的三只暗器

阅读更多
第一支暗器:可变长度的参数列表
def varargs(arg1, *rest)
  "Got #{arg1} and #{rest.join(', ')}"
end

以上方法定义中,arg1是第一个参数,后面还可以接纳n(n>=0)个参数
那么,实参带星号又会怎样呢,实参居然可以带*?
def five(a, b, c, d, e)
  "I was passed #{a} #{b} #{c} #{d} #{e}"
end
five(1,2,3,4,5)
five(1,2,*[3,4,5])
five(*(1..5).to_a)

实参带*,与形参带*恰好相反,它用于把数组打散

第二支暗器:关联block为Proc对象
def get_tax(name, &block)
  "#{name}'s tax is #{block.call(500)}"
end

get_tax "trace" { |amount| amount*0.075 }

block也可以是方法的入参,在方法内call一个block。至于它具体可以干什么,各位就各显神通了。

第三支暗器:内部的yield
def take_block(arg1)
  if block_given?
    yield(arg1)
  else
    arg1
  end
end

这个与第二个很相似……,我比较倾向用第二个,这个可能是牛人的遗物吧。
分享到:
评论

相关推荐

    Ruby-PyCall从Ruby语言调用Python函数

    在上述示例中,`def_module`创建了一个Ruby模块,`def_add`定义了一个方法,该方法调用了Python的`add`函数。`PythonObject.new`用于创建一个Python对象,`send(:__)`则执行了Python函数并返回结果。 PyCall也支持...

    Ruby 方法、类

    在Ruby中,方法和类是构建程序的基本元素,它们是实现代码重用和组织的关键概念。 ### 方法(Methods) 方法在Ruby中是可重复使用的代码块,它们接受参数,执行特定任务,并可能返回值。方法定义使用`def`关键字...

    从Ruby语言调用Python函数-Ruby开发

    PyCall:从Ruby语言中调用Python函数该库提供了直接从Ruby语言中调用Python并与之进行部分互操作的功能。 您可以在PyCall中导入任意Python模块:从Ruby语言调用Python函数该库提供了直接从Ruby语言调用Python并与之...

    ice最简单实现 ruby调用ice接口 - Ruby - language - ITeye论坛

    标题中的“ice最简单实现 ruby调用ice接口”是指在Ruby编程语言中使用ICE(Internet Communication Engine)框架来实现远程方法调用(RPC)。ICE是由ZeroC开发的一种跨平台、高性能的中间件,它允许不同语言的应用...

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

    Class#inherited方法也是这样一个钩子方法,当一个类被继承时,Ruby会调用该方法。默认情况下,Class#inherited什么都不做,但是通过继承,我们可以拦截该事件,对感兴趣的继承事件作出回应。 class String def ...

    Ruby中调用执行shell命令的6种方法

    碰到需要调用操作系统shell命令的时候,Ruby为我们提供了六种完成任务的方法: 1.Exec方法: Kernel#exec方法通过调用指定的命令取代当前进程例子: 代码如下:  $ irb  >> exec ‘echo “hello $HOSTNAME”‘  ...

    Ruby-Functo是ruby中的可组合方法对象

    标题提到的“Ruby-Functo”就是Ruby中实现可组合方法对象的一个库,它为开发者提供了更灵活和模块化的代码组织方式。 Functo库的设计理念是让函数或方法像对象一样可以被操作、组合和复用。在传统的面向对象编程中...

    06Ruby 方法.docx

    在 Ruby 中,**方法**(Method)类似于其他编程语言中的函数,是用来封装一系列操作的独立单元。Ruby 方法的定义遵循一定的规则,例如方法名必须以小写字母开头。 #### 定义方法 方法的基本定义结构如下: ```ruby ...

    ruby中英文api

    在Ruby中,API主要体现在类、方法、模块和库的形式上,它们提供了丰富的功能供开发者使用。Ruby的官方API文档详细记录了每种内置类型、类、模块、方法以及它们的使用方式。"ruby中英文api"资料集可能包含了对这些...

    Ruby元编程第二版中文

    符号(Symbol)在Ruby中是特殊的,它们在内存中只存在一份,常用于元编程中的键值。 5. **Proc对象与lambda**:Ruby的`Proc`和`lambda`可以创建匿名函数,它们可以被赋值给变量,作为参数传递,或者用作方法的...

    ruby中文教程,从基础到深入的让你学习ruby

    此外,Ruby的`send`方法可以动态调用方法,`method_missing`可以捕获未定义的方法调用。 Ruby的Gem库是其生态系统的一大亮点,提供大量的第三方库和框架,如Rails(一个流行的Web开发框架)、Sinatra(轻量级Web...

    Ruby入门教程中文PDF 附实例

    Ruby中的控制结构也相当直观。`if`语句用于条件判断,`for`和`while`循环用于迭代。例如,下面的代码会打印1到5的数字: ```ruby for i in 1..5 puts i end ``` Ruby还是一个面向对象的语言,每个值都是一个对象,...

    Ruby-OurPC是gRPC客户端和服务器的实验性实现

    Ruby-OurPC是一个针对gRPC框架的实验性实现,它为开发者提供了在Ruby环境中构建gRPC客户端和服务器的能力。gRPC是一个高性能、开源和通用的RPC(远程过程调用)框架,它基于HTTP/2协议设计,支持多种编程语言,包括...

    ruby语言帮助文档(简体中文)

    这得益于Ruby的反射API和`send`方法,可以动态地调用方法、添加和删除方法、修改类的结构等。 7. **标准库和Gem**:Ruby的标准库提供了大量的内置模块和类,覆盖了网络、文件系统操作、日期时间处理等常见任务。...

    ruby对excel的操作 详细操作

    在Ruby中操作Excel文件主要是通过`win32ole`库来实现的,这个库允许Ruby程序与Windows操作系统中的Office应用程序进行交互,如Microsoft Excel。以下是关于如何使用Ruby操作Excel的详细步骤和知识点: 1. **引入win...

    Ruby编程.pdf

    在Ruby中,方法调用时是否使用圆括号取决于个人偏好和可读性。然而,在某些情况下,使用圆括号可以帮助避免因优先级规则而导致的混淆。示例中的几种方法调用形式都是等效的: ```ruby puts sayGoodnight("John-Boy...

    pycall.rb:从Ruby语言调用Python函数

    该库提供了直接从Ruby语言调用Python并与之进行部分互操作的功能。 您可以将任意Python模块导入Ruby模块,通过从Ruby到Python的自动类型转换来调用Python函数。 支持的Ruby版本 pycall.rb支持Ruby 2.3或更高版本。 ...

    ruby元编程.pdf

    Ruby元编程是Ruby编程语言中的一个重要特色,它指的是Ruby语言允许程序员在运行时对类、方法和变量等进行操作的能力。通过元编程,开发者可以编写出更加简洁、灵活和高效的代码。《Metaprogramming Ruby》这本书深入...

    ruby中文文档中心资料

    除此之外,Ruby的Gem生态系统是其强大之处,包含了数万个第三方库,涵盖了各种用途,如Web开发框架Rails,数据库访问库ActiveRecord,测试工具RSpec等。 在"testwww"这个文件名中,"test"可能是一个示例项目或者...

    ruby中文文档

    此外,Ruby的包管理系统RubyGems(简称Gem)提供了大量的第三方库,涵盖了Web开发、数据处理、测试工具等多个领域。 7. **Rails框架**:Ruby最著名的应用是Ruby on Rails(RoR)框架,它是一个基于MVC(Model-View-...

Global site tag (gtag.js) - Google Analytics