• ruby基本语法(1)


    一些学习资源

    http://www.codecademy.com/zh/courses/ruby-beginner-en-d1Ylq/0/5?curriculum_id=5059f8619189a5000201fbcb

    感觉这个还是不错的 比较适合上手 刚开始比较有成就感 而且可以有在线的编译环境 很赞

    http://www.ruby-doc.org/core-1.9.3/String.html#method-i-to_i

    一个帮助文档

    至于怎么安装ruby 修改环境变量什么的 应该有网上有许多参考资源

    《Ruby on Rails》敏捷开发最佳实践

    这个也是一点一点整理的 可能中间有些地方比较凌乱 一点一点不断整理中

    零散的知识点

    三种类型numbers Booleans strings

    变量类型是可以自动识别的

    几种基本的符号Addition (+)Subtraction (-)Multiplication (*)Division (/)Exponentiation (**)Modulo (%)2**3=8

     

    Ruby中一切皆对象,所以一切对象都可以有自己的方法,事实上,整个Ruby程序默认地被放在一个顶层对象中。通常在editor中写好Ruby程序,由解释器(interpreter)解释 并在console窗口中显示结果 具体可以直接利用self关键字(指向该类的实例本身)直接输入 p self p self.Class会输出main Object这表示顶层类是object类 顶层类的一个对象是main

    Ruby里面的所有的运算符都是方法,比如可以通过5.+(5)来执行相加的运算,但是为了与其他的语言保持形式上的一致,ruby中也可以写成5+5这样的表达

    基本的测试命令 注释

    要是没有安装IDE(感觉Rubymin比较好) 可以直接在cmd里面运行一些命令:

    ruby -v检测安装是否成功

    ruby -ce my.rb用于检测语法错误

    ruby my.rb编译执行ruby文件

     

    貌似debug需要另外安装,之前在windows下面安装,执行gem install的命令,总是搞不成功,很郁闷,之后学习cf的时候,在linux下面也需要gem install才知道原来是网络的原因,需要把gem的source list更改成为taobao的镜像(https://ruby.taobao.org/),在windows里应该也可以照猫画虎把,还没试过。

     

    在Ruby中使用注释的时候,单行注释用“#”即可

    多行注释 使用“=begin”开始 使用“=end”结束

    (注意 =begin 与 =end  =后面必须直接加上begin或者end 不能加入空格 否则ruby无法识别)

    关于String 对象

    Ruby 字符串的表示方法:

    1、Ruby中允许使用单引号以及双引号来创建字符串a="Hello"  b='Hello'  puts a==b这样输出的结果是true

    对双引号括起来的部分 ruby会执行更多的替换 对于单引号括起来的字符串 Ruby执行的替换较少,为了安全起见,还是用双引号括起来的形式比较好。

    比如 #{expre} 是将内容替换成expre所表达的值

    2、%/stuff/ 与%Q/stuff/

    这两种方式中 stuff的位置上可以放一个较长的字符串,即使这个字符串很长也没有问题。

    这是ruby中的多行字符串的表示方法。

    3、还有一种多行字符串的表示方法

    <<HERE

    Balabalabala 多行字符串文本

      HERE

    标示符之间的内容是一个多行的字符串

    “<<”表示符的语法比较灵活,也可也作为一个参数传入,特别是在方法的调用中(这个具体还有好多细节 这里也就写了个大概)

    比如调用info方法

    Info(str1 ,<<EOS)

    这是一个字符串

    EOS

    第二个参数中传入的内容实际上就是字符串 “这是一个字符串”

     

    字符串中一些比较常见的方法:

     

    .length返回长度

    .reverse返回逆序

    .upcase将所有的字符全变成大写

    .downcase将所有的字符全变成小写

     

    字符串插入:

    first_name="hessen"

    puts"Your name is #{first_name}!"

    输出 Your name is hessen

     

    .capitalize使字符串的首字母大写 并且使后面的其他字母小写 返回修改之后的字符串(仅asc编码)

    .capitalize!使字符串的首字母大写 并且使后面的其他字母小写(仅asc编码)若是字符串已经是第一个字母大写 其他字母小写的格式 则返回的是nil

    其他的类似函数 比如.upcase 以及.downcase 加上!都可以有类似的效果

    .include?"s" 表示在该字符串中查询 是否包含字符串“s”如果包含 则返回true 否则 返回false

    .gsub!(/[s]/,"th") 全局替换 用th 来代替s 注意!与(之间不要有空格

    注意要加上方括号 注意输入必须要是一个字符串的形式“   ”

    concat(s1,s2,……,sn)函数,作用是把n个字符串按序连接起来构成一个新的字符串,当然,也可以像在java中那样,直接用加号把几个字符串连接成一个新的字符串。

    a =1 b =a.to_s

    将数字化为字符串

    text.split(“,”)方法 表示在字符串text中,一旦遇到了”,” 就以”,”为分隔符,将text串分成几个单独的部分 但是text还是不变的

    关于数组

    Ruby数组中的数据类型可以不相同并且长度也是可变的。(好聪明啊 感觉用的久了就会变笨了,除非你本来就是老手)

    Myarray=[1,2,“ruby”]

    Ruby也支持那种-1的表示 比如

    arry=[1,2,"ruby"]

    puts arry[-4]

    puts arry[-3]

    puts arry[-2]

    puts arry[-1]

    puts arry[0]

    puts arry[1]

    puts arry[2]

    puts arry[3]

    输出:

     

    1

    2

    ruby

    1

    2

    ruby

     

     

    array nil   1     2   ruby     1   2   ruby  nil

    index -4   -3    -2   -1       0   1    2     3

    注意 ruby里面数组的下标也是从0开始的 数组中的第一个元素的index为0

    若是直接输出 ruby[0..-1]相当于把数组中的所有元素都输出来了 从index=0d 一直输出到 index=无穷

     

    其他的一些创建数组的方式:
    #此种情况数组长度为0 不含任何元素 之后赋值的时候 数组长度会自发增加

    array=Array.new

    arry=[1,2,"ruby"]

    arry[10]="python"

    p arry[1..-1]

    输出

    [2, "ruby", nil, nil, nil, nil, nil, nil, nil, "python"]

    #先生成一个range在转化为数组,range也是ruby的一种数据类型,后面再介绍

    Range=1..9

    Array=range.to_a

     

    在Ruby的数组里 截取操作很灵活 有时候有点matlab的感觉

    arry="abcdefg"

    puts arry[0]

    #从索引为1开始截取,截取长度为3

    puts arry[1,3]

    #从索引为1开始截取,截取到索引为5,包含5号索引的值

    puts arry[1..5]

    #从索引为1开始,截取到长度为5,不包含该索引的值

    puts arry[1...5]

    输出

    a

    bcd

    bcdef

    bcde

    nil

  • 相关阅读:
    LeetCode-1370 Increasing Decreasing String
    LeetCode-1221 Split a String in Balanced Strings
    Neo4j 实战(三)-- Neo4j Loads CSV Files
    Neo4j 实战(二)-- neo4j 基础语句
    Java HashMap 学习笔记
    Markdown 入门笔记
    《知识图谱方法、实践与应用》读书笔记(第一遍)
    Java 数组复制
    LeetCode-496 Next Greater Element I Solution(with Java)
    linux 同步IO: sync、fsync与fdatasync
  • 原文地址:https://www.cnblogs.com/Goden/p/3787565.html
Copyright © 2020-2023  润新知