0%

引号的区别

知识点

  • 字符串中引号的使用
    • 单引号
    • 双引号
    • 引号中的大括号(运算式)

实战演习

1
2
3
4
5
6
7
8
9
10
11
12
# 风言风语NBA
p1 = "我是\n哈登"
p2 = '我是\n卡戴珊'

puts p1
puts p2

# MVP标准:180俱乐部(投篮50%,三分40%,罚球90%)
mvp = "#{50+40+90}"
puts mvp
mvp = '#{50+40+90}'
puts mvp

字符串也运算

知识点

  • +:字符连接
  • <<:字符带入
  • *:字符循环

实战演习

1
2
3
4
5
6
7
8
9
10
11
12
13
# +:字符连接
a = "helo";
b = "koma";
puts a + " " + b;

# <<:字符带入
a << b
puts a
puts b

# *:字符循环
a="A"
puts a*4

三项运算式

知识点

  • 条件 ?处理1:处理2

表达式说明

条件:逻辑表达式,返回bool类型值
处理1:当条件为时执行
处理2:当条件为时执行

实战演习

1
2
3
4
5
6
7
8
9
10
#例:什么是NBA顶级球员
point = 30 #场均得分
if point >= 30 then
puts "MVP球员"
else
puts "一般球员"
end

#三项运算式写法
puts point >= 30 ? "MVP球员" : "一般球员"

Ruby的操作符

知识点

  • 运算操作符
    • +:加法
    • -:减法
    • *:乘法
    • **:阶乘
    • /:除法
    • %:取余
  • 比较操作符
    • ==:等于
    • !=:不等于
    • >:大于
    • >=:大于等于
    • <:小于
    • <=:小于等于
  • 逻辑操作符
    • &&:逻辑与
    • ||:逻辑或
    • !:逻辑非
  • 位运算操作符(不常用)
    • &:与AND
    • |:或OR
    • ^:亦或
    • ~:位反转
    • <<:左移位
    • >>:右移位

实战演习

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$ irb
# **:阶乘
> 2**3
# %:取余
> 10%3
# !=:不等于
> if 1 != 2 then
> puts "yes"
> else
> puts "no"
> end
# <=:小于等于
> a=5
> b=10
> if a<=b then puts "ok" end
> b=5
> if a<=b then puts "ok" end

备注的使用

知识点

  • 备注的使用
    • 一行备注
      • #:井号备注
    • 多行备注
      • “=begin…=end”
    • 之后全备注
      • __END__

备注的使用

~~~ruby
#单行注释。

=begin
文本注释/多行注释
=end

END
之后所有内容全部都是备注。






初探数组

知识点

  • 数组定义
  • 数组循环
  • 数组连接

数组定义

定义一个数组

1
2
games = ["绝地逃生", "怪物猎人世界", "信长之野望大志"]
puts games

数组循环

循环数组的内容

1
2
3
4
5
6
7
8
#方法1
games.each do |game|
puts "我爱<<#{game}>>"
end
#方法2
games.each_with_index do |game,i|
puts "#{i}.#{game}"
end

数组连接

把数组的内容连接起来,一起输出

1
puts games.join(",")

判断是否是一个数组

1
2
3
if games.respond_to?("each") #games.respond_to?("each_with_index")
...
end

使用对象属性

知识点

  • attr_accessor:定义可存取对象的属性

attr_accessor

提供了可供对象外部使用的属性。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Game
attr_accessor :price #, :title
def initialize(title = "怪物猎人世界", price = 200)
@title = title
@price = price
end
def show()
puts "标题: #{@title}"
puts "价格: #{@price}"
end
end

mygame = Game.new()
mygame.show()

puts "title is " + mygame.respond_to?("title").to_s
puts "price is " + mygame.respond_to?("price").to_s

#mygame.title = "Super Mario World"
mygame.price = 150
mygame.show()

看看对象的里面

知识点

  • instance_methods(all:bool):列出对象(类)内部的方法
  • respond_to?:调查对象的方法/属性是否可用
  • send:执行对象的方法

instance_methods

列出对象(类)内部的可用方法,用于调查解析对象的使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Game
def initialize(title = "怪物猎人世界", price = 200)
@title = title
@price = price
end
def show()
puts "标题: #{@title}"
puts "价格: #{@price}"
end
def show2()
end
def show3()
end
end

puts Game.instance_methods(false)

# mhw = Game.new();
# mhw.show();

respond_to?/send

  • respond_to?:调查对象的方法/属性是否可用
  • send:执行对象的方法

结合这两个函数,可以进行一些设计模式的实现和开发。

1
2
3
4
5
...
mario = Game.new("超级马里奥", 350);
if mario.respond_to?("show") #判断对象是否存在show方法
mario.send("show") #执行指定的方法
end

搞定一个对象

知识点

  • Ruby不是单身,也有对象

Ruby对象

@name是实例变量,能够被该类或者子类继承使用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Player
def initialize(name = "Koma")
@name = name
end
def show()
puts "player: #{@name}"
end
end

koma = Player.new()
koma.show()

curry = Player.new("Curry")
curry.show()

harden = Player.new("Harden")
harden.show()

定义一个函数

知识点

  • 做一个函数
  • 传一个参数
  • 给一个默认值

做一个函数

1
2
3
4
5
def sayHelo
puts "Helo World."
end

sayHelo

传一个参数

1
2
3
4
5
6
7
def sayHelo(name)
puts "Helo #{name}."
end

#sayHelo
sayHelo("John")
sayHelo("Mike")

给一个默认值

1
2
3
4
5
6
7
def sayHelo(name="Koma")
puts "Helo #{name}."
end

sayHelo
sayHelo("Koma")
sayHelo("Mike")