您的位置:首页 > 编程语言 > Ruby

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

2016-10-16 22:37 246 查看
一.基本概念

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
endputs 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" }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: