文档章节

Ruby学习笔记之基础语法

某天
 某天
发布于 2014/11/12 15:14
字数 1118
阅读 37
收藏 0

变量声明:  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.


© 著作权归作者所有

某天
粉丝 2
博文 17
码字总数 8857
作品 0
佛山
程序员
私信 提问
Groovy学习笔记(1)-简介

Groovy是一种基于JVM(Java虚拟机)的面向对象的敏捷动态语言,它结合了Python、Ruby和Smalltalk的许多强大的特性(比如动态类型转换、闭包和元编程(metaprogramming)支持),Groovy 代码能...

山海经
2016/11/09
104
0
ruby 学习笔记总结

ruby 学习笔记 ##----------------------------------------------- 1、调试: 单行交互式shell -- irb 文件执行 -- ruby test.rb 2、语法 |-- ruby是大小写敏感的 |-- ruby中的空格和指标付...

北方攻城师
2015/10/13
32
0
puppet 安装配置教程

【导读】 网上已经有很多关于puppet的安装与配置的教程,因为puppet安装相对来说 比较简单,使用yum源可以快速安装。这也是sky之前不愿意写的原因之一, 但还有部分东西,看了这系列的文章后...

鉴客
2011/11/13
4.4K
2
49个python经典电子书

49个python经典电子书 本文转自:http://blog.sina.com.cn/s/blog_5bce66f00102vgqv.html

天意1
2016/01/20
0
0
java&javaweb学习笔记(汇总)

我的java&javaweb学习笔记(汇总) 笔记分为两大部分:javase和javaweb javase javaweb 笔记内容主要是对一些基础特性和编程细节进行总结整理,适合了解java基础语法,想进一步深入学习的人 gi...

brianway
2016/02/09
3.2K
2

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
今天
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
6
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
8
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
6
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部