Ruby入门——简介&基本概述

Ruby:

Ruby中,一切都是对象,数值、字符串、正则表达式、输入输出、数据库的连接,甚至类本身都是对象。

对象

1. 保有自己的身份

在Ruby中可以使用object_id方法来取得对象的唯一号码。而且Ruby中所有的对象都属于某个类。

对象可以通过调用class方法来确认。

2. 可以接收信息

信息可以被传递给对象。对象接收了信息后,就会运行相应的方法来进行某种处理。从这个意义上说,”信息传递”也被称为“方法调用”

3. 保有内部状态

对象具有0个以上的内部状态。例如,字符串会将其长度作为内部状态来保存,并会在方法的执行过程中发生变化。

str1 = "abcdef"
str2 = "abcdef"
#获取对象idp str1.object_id
p str2.object_id
#str1所属的类
p str1.class
#数字1所属的类
p 1.class

#内容相同,则返回true
p str1 == str2
#内容相同,但是不是同一个对象,返回false
p str1.equal? (str2)

#保有内部状态
p str1.length


#输出结果
#15650964
#15650952
#String
#Fixnum
#true
#false
#6

Ruby —— 是一种快速、简单、面向对象的解释型脚本语言.

An example: fact.rb

def fact(n)
	if n == 0
		1
	else
		n*fact(n-1)
	end
end
	
puts fact(ARGV[0].to_i)

运行:ruby fact.rb 2

#返回 120

运行:ruby fact.rb 50 (计算器中计算时会溢出)

#返回30414093201713378043612608166064768844377641568960512000000000000  --- 正确

当输入命令ruby而不带参数时,它将在标准输入中读入,并在结束输入后执行

C:\Joy\Ruby>ruby
puts "Hello World!"
^D //Ctrl-D
Hello World!

Ruby字符串

“”,’’括起来的是Ruby中的字符串

区别:

puts "a\nb\nc"    
#输出
#a
#b
#c
puts 'a\nb\nc'
#输出:a\nb\nc


puts "abcd #{4*4} efg"
#输出: abcd 16 efg
puts 'abcd #{4*4} efg'
#输出: abcd #{4*4} efg

字符串操作,比C,Java等语言更灵活

#1.连接字符串
puts "foo" + "bar"
#输出foobar

#2.重复字符串
puts "foo" * 2
#输出foofoo

#3.获取字符串中特定字符
herb = "parsley"
#从0位(第一个字符)开始,获取1个字符
puts herb[0,1]
#输出p

#从-2位(倒数第2个字符)开始,获取2个字符
puts herb[-2,2]
#输出ey

#输出第0位到第3位的4个字符
puts herb[0..3]
#输出pars

#输出倒数第5位到倒数第2位的4个字符
puts herb[-5..-2]
#输出rsle

Ruby数组
Ruby数组中可以包含不同的对象类型(数据类型)
例如: ary = [1, 2, "3"]

Ruby数组可以被连接或重复
例如: ary = [1, 2, "3"]
ary + ["foo", "bar"]
#ary = [1, 2, "3", "foo", "bar"]

ary * 2
#ary = [1, 2, "3", 1, 2, "3"]


数组索引
ary = [1, 2, "3", 1, 2, "3"]

ary[0]
#输出第一个字符--->1

ary[0,2]
#输出第一个字符开始的2个字符--->1, 2

ary[0..1]
#输出第一个字符和第二个字符--->1, 2

ary[-2]
#输出倒数第二个字符--->2


ary[-2,2]
#输出倒数第二个字符开始的2个字符--->2, "3"

ary[-2..-1]
#输出倒数第二个字符和倒数第一个字符--->2, "3"

Hash
h = {1 => 2, "2" => "4"}
{1=>2, "2"=>"4"}

h[1]
2

h["2"]
"4"

结构控制
1) case

i=8
case i
when 1, 2..5
 puts "1..5"
when 6..10
 puts "6..10"
end
#输出6..10

2) while

i = 0
puts "It's zero."  if i==0 

puts "It's negative." if i<0 
puts i+=1 while i<3

#输出
#It's zero.
#1
#2
#3

3) for
for elt in collection
  # ... here, elt refers to an element of the collection
end

for num in (4..6)
puts num
end
#输出
#4
#5
#6
原文地址:https://www.cnblogs.com/enjoytesting/p/2550984.html