ruby基本概念(学习笔记二)

一.基本概念

1. 类

类是用来表示实际世界中的实体,是状态和使用这些状态的方法的组合

2.实例

一个类的具体实现,跟对象,类的实体等同含义

3.构造函数

ruby中通过调用构造函数来创建对象,是一种特殊的方法,我们称构造函数为new,比如:

song1=Song.new("ruby tuesday");

song2=Song.new("tomorrow");

4.方法调用

“he is a girl”.length

-190.abs

点号之前称为接收者,后面的称为被调用的方法。第一个例子用来求一个字符串的长度,第二行代码用来求一个数字的绝对值。ruby和其他语言有一个很大的区别,比如java中,是通过调用另外一个函数来获取一个数字的绝对值,然后将返回值赋给数字自己(number=Math.abs(number) )。而ruby中,求绝对值的能力是内建在数字中的,只需要发送abs消息给一个数字对象,数字对象就会去求绝对值了。所以说ruby是一门真正的面向对象语言


二. 基础知识

2.1 先来一个简单的例子

def say_goodnight(name)
    result="good night,"+name
    return result
  end
  #say goodnight
  puts say_goodnight("liwenshui")
  puts say_goodnight("liwen")
1. 每个语句在单独的行上,无需分号分割

2. #号开始的行为注释行

3. 方法是用def定义,方法体没有方括号,end用来表示方法的结束

4. 局部变量使用无需先定义,比如result变量赋值给它的时候,他就存在了

5. 字面量定义字符串,可以单引号也可以双引号,如果单引号,那就是字面量,如果双引号,会寻找转移字符等。比如puts "good \n tx",会换行,其二,表达式内插,前面的方法可以写成如下形式

def say_goodnight(name)
    result="good night,#{name}"
    return result
  end
#{...}花括号里面可以是复杂的表达式,比如:

def say_goodnight(name)
    result="good night,#{name.capitalize}"
    return result
  end
puts say_goodnight('uncle')的输出结果为 good night Uncle。

如果表达式是一个全局变量或者实例变量,花括号可以省略,如下所示

$greeting="Hello"
@name="predunce"
puts '#$greeting,#@name'

2.2 命名惯例

1.局部变量,方法参数和方法名称小写字母或者下划线开始
2.全局变量$为前缀,实例变量@,类变量2个@

3.类名称,模块名称,常量大写字母开始


2.3 数组和散列表

数组定义:

a =[1,'cat',3.14]

a[0]

a[1] =nil

数组方括号包含,里面可以是三种类型(整数,字符串,浮点数),nil在ruby中表示没有任何东西的对象,和其他语言不同,其他语言表示没有对象。

定义一个数组需要很多逗号和引号,%w可以解决,如下所示

a=['dog','cat','ant','bee']

等价于

a=%w{dog,cat,ant,bee}

散列表定义:

inst_section= {

'cello' =>'String',

'drum'=>'percussion',

'oboe'=>'brass'

}

inst_section['oboe']         ->brass

inst_section['oboes']       ->nil


2.4 控制结构

if或者while循环,没有花括号,end用来表示程序体的结束

 count = 99
  if count > 10
    puts "Try again"
  elsif tries == 3
    puts "You lose"
  else
    puts "Enter a number"
  end
如果if或者while语句的程序体只是一个表达式,ruby语句修饰符是一种有用的快捷方式

 radiation = 1
  puts "Danger, Will Robinson" if radiation > 3000

2.5 Block
block,一种可以和方法调用相关联的代码块,几乎就像参数一样。是定义在花括号或者do...end之间的一组代码,一行就在花括号里,多行就在do...end中间。

  animals = %w( ant bee cat dog elk )    # create an array
  animals.each {|animal| puts animal }   # iterate over the contents
参数用两个竖线表示,如果多个参数,逗号分割。

  def call_block
    puts "Start of method"
    yield
    yield
    puts "End of method"
  end

  call_block { puts "In the block" }




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值