ruby基础

ruby学习基础

inputthing = gets.chomp.to_i

if语句

if inputthing == 1
    puts inputthing
    system "say ruby我的最爱"
end

循环语句

while inputthing == 5
    puts "inputthing"
    inputthing++
end

until inputthing == 5
    puts "inputthing"
    inputthing++
end

case语句 (switch)
case inputthing
when inputthing==5
    puts inputthing
end

循环异常抛出

a = 100
while true
    b = gets.to_i
    begin
        inputs = a/b
        puts inputs
    rescue Exception => e
        puts "error"
    end
end

function 类函数/类方法 带默认值的运算

def add(a = 3,b = 2)
    return a+b
end

ruby类的学习 类似于OC类 EZ
类存在自己的构造方法,生成的实例也会集成类的所有属性和函数

class Student
    #初始化方法
    def initialize(name, no, gender)
        @name = name
        @no = no
        @gender = gender
    end
    
    def sayHi
        puts "我叫#{@name}, 学号#{@no}"
    end
end

类常量 类变量 类方法的访问控制 public(可不写),private (类似于OC optional,require)
class Student
#变量 创建实例变量
attr_accessor :name #可读可写
# attr_reader:no #readonly
# attr_writer:gender #writeonly
attr_accessor :no
attr_accessor :gender

#常量   通常常量的首字母大写   常量不可修改  属于类的常量 实例同时拥有 调用时类名加 ::
    Version = "1.0"


    def initialize(name,no,gender)
        @name = name
        @no = no
        @gender = gender
    end

setter getter方法的生成类似于OC 写法不同而已 并且都可以更优雅实现

    # #setter  
    # def name=(name)
    #   @name = name
    # end
    # #getter
    # def name
    #   return @name
    # end

    private  #public  不写就相当于public
    def sayHi
        puts "我叫#{@name}"
    end
end

类方法,实例方法,类的继承

class Student
    attr_accessor :name
    attr_accessor :no
    attr_accessor :gender
    #初始化方法
    def initialize(name, no, gender)
        @name = name
        @no = no
        @gender = gender
    end
    
    def say_Hello  #实例方法
        puts "我叫#{@name}, 学号#{@no}"
    end

    def self.nickname  #类方法 加self.
        return "学生类"
    end
end

类的继承 可以重写函数 .. (除了书写不一样之外 使用 < ,思路和实现和OC 一毛一样)

class UniversityStudent <Student

    def say_english
        puts "my english is very good"
    end
    
end

类的扩展 extension ....和OC概念一毛一样 EZ...orz

class Student
    attr_accessor :name
    attr_accessor :no
    attr_accessor :gender
    #初始化方法
    def initialize(name, no, gender)
        @name = name
        @no = no
        @gender = gender
    end
    
    def say_Hello  #实例方法
        p "我叫#{@name}, 学号#{@no}"
    end
end

class Student   #重写类扩充实例方法
    def say_wulala
        p "wulala"
    end
end

class String #重新类添加方法 可以扩充和重写类方法 EZ...orz

    def self.nickname
        p "扩充的类方法"
    end

    def self.name
        p "String类changeName"
    end
end

ruby 模块 module !!!! 不清晰 需要重新看
没有new方法
可以 :: 调用属性
可以 . 调用方法

定义简单模块 module

module Mathematics
    PI = 3.1415

    def self.sqrt(number)  #module无法实例化   所以方法是类方法 self.
        Math.sqrt(number)
    end

    #module调用实例方法也是可以的
    def hello
        p "hello"
    end
    #模块中可以存在有意义使用的方法和常量 #警告
end

class Student
    include Mathematics     #调用module中实例方法也是可以的
    def initialize(no)
        @no = no
    end 
end

ruby运算符 可以自定义运算符 屌的一批 ...orz

1,逻辑运算符 EZ 或且非 && || !
2,条件运算符 EZ c=(a>b)?a:b (和OC...一毛一样)
3,范围运算符 EZ .. ...

4,自定义运算符 相当于创建一个类的实例方法

class Vector
    attr_accessor :x, :y
    def initialize(x, y)
        @x = x
        @y = y
    end
    
    def +(the_vector)
        Vector.new(@x+the_vector.x, @y+the_vector.y)
    end
    
end

ruby数值类和字符串
1.数值类 Numeric
Integer Float
Fixnum Bignum

round 四舍五入计算
ceil 进一位
floor 退一位

Math模型 PI sqrt()开方

创建字符串

a = "2"
a = String.new("2")
a = "#{a}" #字符串插入数据
a = %Q{啦啦啦}
a = %q|啦啦啦|

需要熟练的使用字符串的methods

数组类Array
数组基本使用是和OC相同 []

数组methods操作 需要熟练掌握

哈希类Hash 为无序的集合
hashes = {"a"=>"b"} #键值对原理 值可为大部分类型数据
hashes["a"]

hash methods熟悉和掌握

ruby File FileUtils 文件类,

文件夹 Dir ****不熟!!!

Time 时间类 单位是秒
Time.new Time.now
自定义时间格式 Time.new.strftime("%Y/%m/%d %H:%M:%S")

Date 使用需要require "date" 单位是天

DateTime类 单位是秒

ruby 迭代器 !!! 是ruby自有的特殊的循环方式
数字.times 数组.each hash.each

5.times {|n|
    p n
}

.sort 排序深入学习需要 ****不熟!!!

自定义迭代器

class Book
    attr_accessor :title, :author
    def initialize(title,author)
        @title = title
        @author = author
    end
end

class BookList
    def initialize()
        @book_list = array.new
    end
    
    def add(book)
        @book_list.push(book)
    end

    def delete(book)
        @book_list.delete(book)
    end

    def length
        @book_list.length
    end

    def [](n)
        @book_list[n]
    end

    def []=(n,book)
        @book_list[n] = book
    end

    def eachTitle
        @book_list.each { |book|
            yield(book.title)
        }
    end

end

Mix-in include extend
m模块的模块方法 始终无法被混入 Mix-in
include 调用模块方法为类的实例方法
extend 调用模块方法为类方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容

  • https://mauricio.github.io/2011/05/30/ruby-basics-equalit...
    李小西033阅读 422评论 0 0
  • 一 ruby是一门面向对象的语言 在建模过程中,分析要表达的事物,将他们归类,抽象为对象,同时赋予他们一定的成员变...
    李庆文阅读 219评论 0 0
  • 按照以往的学习方式,每学一种编程语言都要先配置它的环境。因此,在正式写 Ruby 程序之前应该先配置环境。看这里,...
    芝麻香油阅读 411评论 0 1
  • ruby基础用法简单整理 基础变量部分 变量声明 支持并行赋值 变量操作 变量交换 语句后面不跟";" / % 字...
    owlwisp阅读 1,178评论 0 51
  • 作者有话说:书名已经表明我的写作风格,我是那种想写就写,想不起来就忘记,所以这一篇可能我会弃坑,我也可能写到完结。...
    秦元清阅读 271评论 0 0