Ruby学习笔记之基础语法




变量声明:  name = "juno"     (Ruby中不需要结尾分号,Ruby是动态语言,所以不需要声明变量的类型,Ruby对空格不敏感)

变量名声明规则: 见名知意原则,单词之间用下划线连接,尽量不要使用其他符号(按照开发社区习惯)

算术运算符: n**m  n的m次方,  其他+-*/% 跟其他语言无区别

打印:print 和 puts   区别在于 puts 有\n换行符。 例:print "something"    puts "something"

方法:Ruby中一切皆是对象 。例 name.length   name变量的长度 同样   "juno".length也是可行的 , 

          .reverse是取反 ,  .upcase取大写,downcase 取小写, "juon".downcase.reverse.upcase还能这样。

注释:单行 #  ;  多行  =begin     =end     注意 =begin和=end必须是独立一行并而是顶格的

打印中使用表达式:

        print "What state or province are you from?"

        state = gets.chomp  ( gets代表从获控制台取输入流.chomp得到的内容输出时后面不带空格和换行,gets默认最尾后添加 \r\n )

        state.upcase! (最后面加 叹号 ! 代表修改自身值  相当于  state = state.upcase)

        puts "Your name is #{first_name} #{last_name} and you're from #{city}, #{state}!"   (#{变量名}   取值拼接)

         "#{string[0].upcase}#{string[1..-1]}"    看起来有点类似于EL表达式的用法

Integer类型:  value = Integer("123")

控制流: if    elsif  else   end      注意:  elsif  不是elseif这点和java不同    if 后面的逻辑表达式不需要用括号括住,最后一定                要加 end .

                逻辑非的另一种判断法  。例:if  !true    可以这样声明   unless  true    

逻辑运算符: != ,  == ,  < , > , <= , >= , && , || , !  .

付值运算符:  +=  , -=

逻辑结果方法,参数传入 ,用于IF? :   

        string_name.include? "d"     string_name中是否include(包含)   ?    “ d”(?号后跟传入参数),一般来说这种用法的方法返回结果都是 true or false

       if  user_input.gsub!(/s/,"th")   替换   因为有!号 所以把原来的值改变  gsub会返回一个字符串,和是否有字符被替换

        if 表达式 then  end #当写在一行时 需要用then

循环:

        while或者until/ xxxxx  可以省略do关键字,原因不明  (while 是只有true才循环,until是只有false才循环)  

        xxxxxxxx   

        end

        while或者until  xxxxx  do  (while 是只有true才循环,until是只有false才循环)  

        xxxxxxxx   

        end


        for  num in 1...10     (三个点是不包含10,两个点是包含最高位)

        end

        loop     //自动loop循环,不断循环,直到break 中的条件满足才结束,break可以是多个  

        {         可以用do关键字代替

         xxxxx         

        break  if  xxx==true        遇到break关键字,如果满足,跳出循环

        next if  xxxx==true         遇到next 

         }         可以用end关键字代替

变量循环:

        object.each {   |item| #Do  something}        一切皆是对象,直接在变量使用 .each {}  即可开始一个变量循环,如数组

        object.each do   |item| #Do something  end     |xxxx|     双||是一个占位符, xxxx代表每个循环对象的名称

        10.times{}     这个就像一个for 简化的循环, 循环10次

         (1..10).each  又一种for的简写

数组:

        my_array = [1,2,3,4]

        my_array[0]    访问索引从0开始

        my_array.each do |obj|   end

        my_2d_array = [ [11,1] , [2,22] ] 多维数组

哈希:键值对集,相等于java的MAP

        pets = Hash.new   /      pets = { "111" => "222"  ,  "333" => "444"}

        pets = Hash.new(0)    意思是每个刚分配的键值对的值默认为0 也可以是其任何类型

        pets["ssss"] = "sssss"

        pets.each {  |key,value|            在each中   { |x,y| 不能换行,似乎是这样的

                 puts "#{key} : #{value}" 

                 } 

       petspets.sort_by { |key,value |     排序

        value

        }

        [1,2,5,7,98,4].sort!       升序排序        

        frequencies.reverse    反转

方法声明:

        1. 头部: def (define定义的缩写) , 方法名 , 参数   def xxxxx ( n,x)

        2.主体:代码,缩进两格  

        3. 返回(可选):return

        4.结尾:end

        提示:一个约定,如果方法是返回一个boolean 请在方法名尾部加一个部号如:xxxxx?(n)

方法调用:

        直接使用方法名 如      xxxxxxx(xx)    如果Ruby找不到这个方法,会返回NameError,括号不是必填的,但填上增加可读性

示图参数:splat arguments

        在参数前面加一个 * 号 ,很好理解,相当于java的可变参数,必须在方法参数中的最后一个。

字符串的特殊用法:

        一个字符串如:"abc"   要获取第一个字符,可以这样 "abc"[0]  ,  要获取第二位到结尾可以这样 "abc"[1..-1] 好神奇

对象比较:

        两个对象之间进行比较,使用:A <=> B   , 如果A等于B 返回0,A大于B 返回 1,A小于B 返回-1.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值