[Ruby] LEVEL 2 Methods and Classes

Optional Arguments

Set default arguments, when we don‘t need to call it, we can simply skip it.

def new_game(name, year=nil, system=nil)
  {
    name: name,
    year: year,
    system: system
  }
end
game = new_game("Street Figher II")

Options Hash Argument

Sometimes, optinal argumetns also not that good. For exmaple, we have one argument added to the end, if we do want pass in reply_id and year, system we don‘t need to pass in, then we need to put placeholder in the function call.

def new_game(name, year=nil, system=nil, reply_id = nil)
  {
    name: name,
    year: year,
    system: system
  }
end
game = new_game("Street Figher II", nil, nil, 50)

Therefore we can use options has argument:

def new_game(name, options={})
  {
    name: name,
    year: options[:year],
    system: options[:system]
  }
end
game = new_game("Street Figher II",
  year: 1992,
  system: "SNES")

Exception

def get_tweet(list)
    unless list.authorized?(@user)
        raise AuthorizationException.new
    end
    list.tweets
end

#raise an Exception instead

begin
    tweets = get_tweets(my_list)
rescue AuthorizationException
    warn "You are not authorized to access this list"
end
时间: 2024-11-10 11:25:38

[Ruby] LEVEL 2 Methods and Classes的相关文章

HeadFIrst Ruby 第二章总结 methods and classes

HeadFIrst Ruby 第二章总结 methods and classes 前言 这一章讲了如何创建自己的 class,并且讲了在用 class 创建 object 的两个要素: instance variables 和 instance methods.和它们需要注意的一些问题. 创建 method 相关 问题1:括号 be or not be? 在 Ruby 中,如果需要创建的 method 包含参数,那么后面应该有“()” ;如果不需要任何参数,则不需要加“()”,在调用函数的时候也

[Ruby] Define abstract methods

Ruby has its own style to define the abstract methods in its class. class Shape def initialize raise NotImplementedError.new("#{self.class.name} is an abstract class") end def area raise NotImplementedError.new("#{self.class.name} area is a

浅析Ruby中的methods,private_methods和instance_methods

首先,methods,private_methods是Object类的实例方法;instance_methods是Module类的实例方法. 我们先来看看这样安排的原因: 我们知道一个Ruby对象所能调用的方法包含在其祖先链中(包含这个对象的单例类).这里所说的Ruby对象可以分为2类,一类是普通对象,像"abc",2,obj=Object.new这种对象,它们所属的类分别是String,Fixnum,Object,我们称这种对象为普通对象:还有一类对象是类(类本身也是一种对象),像S

ruby Methods, Procs, Lambdas, and Closures

define simple method定义简单方法 关键字def用于方法定义,在其后是方法名和可选的参数名列表,参数名列表会用一对圆括号括住.构成方法主体的代码放在参数列表之后,end用于结束方法定义. #define a method def factorial(n) if n<1 raise "argument must be >0" elsif n==1 1 else n*factorial(n-1) end end puts factorial(5) 方法返回值

Thinking in Java,Fourth Edition(Java 编程思想,第四版)学习笔记(八)之Reusing Classes

The trick is to use the classes without soiling the existing code. 1. composition--simply create objects of your existing class inside the new class. simply reusing the functionality of the code, not its form 2.inheritance--creates a new class as a t

Level Set方法简介

originate from: http://www.cnblogs.com/tabatabaye/articles/891232.html Level Set方法简介: Level Set方法是由Sethian和Osher于1988年提出,最近十几年得到广泛的推广与应用.简单的说来,Level Set方法把低维的一些计算上升到更高一维,把N维的描述看成是N+1维的一个水平.举个例子来说,一个二维平面的圆,如x^2+y^2=1可以看成是二元函数f(x,y)=x^2+y^2的1水平,因此,计算这个

TIJ英文原版书籍阅读之旅——Chapter Seven:Reusing Classes

Reusing Classes 有两种常用方式实现类的重用,组件(在新类中创建存在类的对象)和继承. Composition syntax Every non-primitive object has a toString() method, and it’s called in special situations when the compiler wants a String but it has an object. Inheritance syntax You’re always do

nim和面向对象(一)

Nim and OO 原文链接:http://goran.krampe.se/2014/10/29/nim-and-oo/ 作者:Roads less Taken A blend of programming, boats and life. 时间:2014,10,29 Nim is presented as an imperative language. And yes, it has some of its roots in the Pascal line of languages, but

SWIG 3 中文手册——5. SWIG 基础知识

目录 5 SWIG 基础知识 5.1 运行 SWIG 5.1.1 输入格式 5.1.2 SWIG 输出 5.1.3 注释 5.1.4 C 预处理器 5.1.5 SWIG 命令 5.1.6 解析限制 5.2 包装简单的 C 声明 5.2.1 处理基本类型 5.2.2 全局变量 5.2.3 常量 5.2.4 一点关于 const 的文字 5.2.5 char * 的注意事项 5.3 指针与复杂对象 5.3.1 简单指针 5.3.2 运行时指针类型检查 5.3.3 派生类型.结构体和类 5.3.4 未