• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Ruby基本语法规则

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1.Ruby常用数据类型 Numbers, Strings, Booleans

my_num = 25

my_boollean = true  (or false)

my_string = "Ruby"

2.Ruby常用数学计算操作符

加(+)     
减 (-)
乘 (*)
除(/)
幂次方 (**)
求余 (%)

3.Ruby 输出操作

puts 带换行

print 不带换行

打印字符串:  print "HelloWorld" (不换行)

      puts "HelloWorld" (换行)

打印变量: name = "Ruby"

      print "#{name}"     #注意格式  "#{xxx}"

4.字符串常用操作函数

.length(计算字符串长度)    

name = "Ruby"

name.length  (返回4   等价于  "Ruby".length)

.reverse(反转字符串)

name.reverse(返回 ybuR  等价于 "Ruby”.reverse)

.upcase & .downcase (转换大小写)

name.upcase 和 name.upcase 分别返回 RUBY ruby

 

5.单行注释与多行注释

单行注释以 # 开头   eg. #I'm a comment
多行注释格式为 =begin I'm a comment! I don't need any # symbols. =end
注意:=和begin和end之间不能有空格 begin后面也不要有空格

6.变量命名规则

变量名一般以小写字母开头, 单词之间用下划线分割, eg. counter, mastrful_method

Ruby不会阻止你用特殊符号如$, @等开头, 但是最好不要这么做, 容易产生歧义, 可读性降低。

7.方法调用

用.操作符调用方法

可以每次单独调用一个方法也可以进行联合调用

如:name = "Ruby"

可以

  name.downcase

  name.reverse

  name.upcase

也可以 name.downcase.reverse.upcase 这样调用

8.获取输入

print "what's your first name?"
first_name = gets.chomp

gets是用来获取输入信息的方法,Ruby在其后面自动添加一个换行符\n   chomp是用来删除换行符的方法。
eg:
  print "What's your first name?"
  first_name = gets.chomp
  print "What's your last name?"
  last_name = gets.chomp
  print "What are you from?"
  city = gets.chomp
  print "what's your state?"
  state = gets.chomp

  print "#{first_name}  #{last_name}  #{city}  #{state}"

9.Ruby的程序控制流

条件判断句 if/else的用法

print "Integer please: "
user_num = Integer(gets.chomp)

if user_num < 0
  puts "You picked a negative integer!"
elsif user_num > 0
  puts "You picked a positive integer!"
else
  puts "You picked zero!"
end

注意要以end结尾 elsif的写法(区别于elseif)

unless的用法

if(x<5) then statement1 end
unless x
>=5 then statement1 end 这两句是对等的 if x<5 then statement1 else statement2 end unless x<5 then statement2 else statement1 end 也对等 unless 用来检验后面条件是否为假, 若假则执行后续代码, 若真则执行else (unless 相当于 if not)

比较运算符

相等  ==

不等  !=

大于 >

大于等于 >=

小于 <

小于等于 <=  

逻辑运算符

与 &&  或 ||  非 !

 循环语句while用法

counter = 1
while counter < 11
  puts counter
  counter = counter + 1
end  #注意以end结尾

循环语句until, 当until后条件满足时跳出循环(相当于  while not)

counter = 1
until counter > 10
  puts counter
  # Add code to update 'counter' here!
  counter += 1
end #注意以end结尾
注意: Ruby中没有前++和后++,前--后--。 但有+=, -=

for循环的用法

for num in 1...10    #三个点表示前闭后开  输出1-9
  puts num
end

for num in 1..15   #两个点表示前后都封闭, 输出1-15
  puts num
end

loop循环的用法  (相当于C里的 do...while)

i = 20
loop do
  i -= 1
  print "#{i}"
  break if i <= 0
end

next的用法  (同C语言continue)

i = 20
loop do
  i -= 1
  next if i % 2 != 0 
  print i
  break if i <= 0
end
输出 18 16 14 12 10 8 6 4 2 0 nil

10.数组

一维数组表示方法:  array = [1,2,3,4,5]  #注意  用中括号

一维数组的遍历:
  array = [1,2,3,4,5]
  方式一:
  array.each { |x| print"#{x+10}" }   #可以在||之间使用任何变量名, 用来保存从数组中取得的值

  方式二:
  array.each do |x|
    x += 10
    print "#{x}"
  end

多维数组的遍历:
  s = [["ham", "swiss"], ["turkey", "cheddar"], ["roast beef", "gruyere"]]
  s.each do |sub_array|
    sub_array.each do |y|
      puts y
      end
  end

.times 的用法

.times像是for循环的超级压缩版
10.times {print "xxx"}   #打印10次 "xxx"

 11.hash的用法

hash可以存储键值对,即key/value
创建hash
方式一:
my_hash = { "name" => "Eric",
  "age" => 26,
  "hungry?" => true
}

puts my_hash["name"]   #打印出 Eric
puts my_hash["age"]    #打印出 26
puts my_hash["hungry?"]#打印出 true

在花括号中添加key/value 对
用=>符号来实现key/value的对应

方式二  用Hash.new方法创建hash
pets = Hash.new       #注意Hash首字母要大写
pets["Stevie"] = "cat"
pets["Bowser"] = "hamster"
pets["Kevin Sorbo"] = "fish"

puts pets["Stevie"]
puts pets["Bowser"]
puts pets["Kevin Sorbo"]

Hash.new  创建了一个空的hash
可以用类似数组的方式向构造出的hash对象添加key/value, key作为下标, value作为值
同样可以用类似数组的方法打印key对应的value

遍历hash
restaurant_menu = {
  "noodles" => 4,
  "soup" => 3,
  "salad" => 2
}

restaurant_menu.each do |item, price|
  puts "#{item}: #{price}"
end
类似遍历数组, 针对上例,每次遍历hash,把hash的key赋给item, 把hash的key赋给price, 打印item和price

hash排序
  puts "Please input: "
  text = gets.chomp
  words = text.split()
  frequencies = Hash.new(0)
  words.each do |letter|
    frequencies[letter] += 1
  end  
  frequencies = frequencies.sort_by do |word,count|
    count
  end

12.函数的定义方法

def double(n)
  return n * 2
end
def为方法定义关键字, 后面double为方法名,n为参数,return表示函数有返回值, 返回n*2,以end结尾, 方法名和end之间为函数体。

13.语句块blocks的定义方法

blocks可以理解为没有方法名的方法,blocks可以用关键字do...end表示,也可以用{}表示
例如:
1.times do
  puts "I'm a code block!"
end

1.times { puts "As am I!" }

14.理解symbol

symbol总是以:开头,后面必须紧跟一个字符或者一个下划线_ 

  puts :foo.object_id 327458
  puts :foo.object_id 327458
  puts :"foo".object_id 327458

  puts "foo".object_id 24303850
  puts "foo".object_id 24300010
  puts "foo".object_id    24296170 

 #在 Ruby 中每一个对象都有唯一的对象标识符(Object Identifier),可以通过 object_id 方法来得到一个对象的标识符。 
 根据上面程序, 可知 symbol和string的区别:
 每个 String 对象都是不同的,即便他们包含了相同的字符串内容;而对于 Symbol 对象,一个名字(字符串内容)唯一确定一个 Symbol 对象(即名字相同,则symbol相同)。
 
哈希表是symbol应用最广泛的地方。
下面这个哈希表表示按城市分类的一些机器的集合。
一个哈希表例子
                
hosts{
       'beijing' => 'machine1',
       'shanghai'  => 'machine2',
       'guangzhou' => 'machine3',
       'tianjin' =>  'machine4',
       'shenzhen' => 'machine5'
}
如果要引用 beijing 的机器,使用 hosts['beijing'] 。但如果我们程序中要频繁引用哈希表中 value ,这样就不大好了,因为 Ruby 对每一次字符串引用都会生成一个 String 对象,累积下来这个开销是相当大的。

我们完全可以使用 Symbol ,因为对于这些 key 来讲,我们用的就是名字而已,例如下面hosts[:beijing]
使用 Symbol 作为 key
                
hosts = {
 :beijing => 'machine1',
 :shanghai => 'machine2',
 :guangzhou => 'machine3',
 :tianjin  => 'machine4',
 :shenzhen => 'machine5'
}
通常来讲,当你面临 String 还是 Symbol 的选择时,可以参考以下标准:

如果使用字符串的内容,这个内容可能会变化,使用 String
如果使用固定的名字或者说是标识符,使用 Symbol

string和symbol之间的转换

:sasquatch.to_s      # ==> "sasquatch" (symbol转string)
"sasquatch".to_sym   # ==> :sasquatch (string转symbol)
"hello".intern 和 .to_sym效果相同都可以string转symbol 

15.hash的新的表示方法

自Ruby1.9之后, hash的语法比原来更为简洁

new_hash = { 
      one: 1,
      two: 2,
      three: 3
}
冒号在symbol之后, 不再使用=>

16.Ruby允许单独访问key或value

my_hash = { one: 1, two: 2, three: 3 }

my_hash.each_key { |k| print k, " " }
# ==> one two three

my_hash.each_value { |v| print v, " " }
# ==> 1 2 3

 17.Ruby的隐式返回

  Ruby方法总会返回最近的一次表达式所得到的值。
  def add(a,b)
    return a+b
  end
  等价于:   
def add(a,b)     a+b   end

 18. 三目运算符

three = 3
puts three == 3 ? "Of course." : "What?"
# ==> puts "Of course."

 

 

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Centos7系统上解决Ruby版本过低的情况-----源码安装ruby发布时间:2022-07-13
下一篇:
ruby--定义一个方法发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap