Ruby基础1

输出函数puts

puts "hello"
a = 10
b = 5
puts a+b

数值类型转字符串类型to_s

字符串类型转数值类型用to_i

str = 123.to_s
puts str
puts "hellow " + 123.to_s

字符串的插值 #{传入变量}

a = 10
n = "cardithea"
str = "#{n} age:#{a.to_s}"
puts str

查看当前类的所有方法

puts "hello".methods

ruby修改字符

a = "hello"
a = a * 3
puts a
puts a.methods

字符串去除换行符用.chomp

获取字符串输入用gets

a = gets
puts a.chomp

ruby中if的使用

target = gets.to_i
if target == 1
    puts "命中1"
elsif target == 2
    puts "命中2"
else
    puts "没有命中"
end

ruby中unless的使用

unless input == 100
    puts "123"
else
    puts "321"
end

ruby中switch语句的使用

target = gets.to_i

case target
# ..表示闭区间,左端点和右端点都能取到
# ...表示右开区间,左端点能取到
when 1..2
    puts "in [1,2]"
when 3...10
    puts "in [3,9]"
else
    puts "not in"
end

ruby中的for和while和until

sum = 0
for i in 1..5 do
    sum = sum + i
end

print sum
target = gets.chomp.to_i

ct = 0
while target == 1
    puts "run"
    ct = ct + 1

    if ct == 5
        break
    end
        
    sleep 1
end
target = gets.chomp.to_i

until target != 1
    puts "run"
    sleep 1
end

ruby中的.each方法

#从区间中逐个取出每个数然后赋值给a然后进行sum=sum+a的计算
sum = 0 (1..5).each{|a| sum = sum+a } puts sum

ruby的异常处理

a = 100
b = 0

begin
    puts a/b
rescue Exception => e
    puts "分母不能为0"
end

ruby的定义方法、

def add(a, b)
    puts "its add function"
    return a + b
end

res = add(5, 10)
puts res

ruby的导入包  require '包路径'

ruby创建类

class Student
    def initialize(name, age, gender)
        @name = name
        @age = age
        @gender = gender
    end
    
    def show()
         puts "name:#{@name} age:#{@age} gender:#{@gender}"
    end
end

st = Student.new("bob", 12, "man")
st.show()

getattr,setattr快速设置

class Student
    #除了普通的构造getattr和setattr方法,还可以使用ruby自带的方法快速设置
    #设置name可读可写
    attr_accessor :name  
    #设置仅仅可读
    attr_reader :age 
    #设置仅仅可以写
    attr_writer :gender 

    Version = "1.0"  #类常量

    def initialize(name, age, gender)   #实例常量
        @name = name
        @age = age
        @gender = gender
    end

end

st = Student.new("bob", 12, "man")
st.name = "sttttt"
puts st.name
puts st.age
puts Student::Version  #访问常量使用双冒号

ruby 实例方法和类方法

class Student

    attr_accessor :name  
    attr_reader :age 
    attr_writer :gender 

    Version = "1.0"  #类常量

    def initialize(name, age, gender)   #实例常量
        @name = name
        @age = age
        @gender = gender
    end

    def show()
        puts "这是实例才能调用的方法"
    end

    def self.class_show()
        puts "这是不需要实例化也能调用的类方法"
    end
end

st = Student.new("bob", 12, "man")
st.show()
Student.class_show()

ruby继承

class Student

    attr_accessor :name  
    attr_reader :age 
    attr_writer :gender 

    Version = "1.0"  #类常量

    def initialize(name, age, gender)   #实例常量
        @name = name
        @age = age
        @gender = gender
    end

    def show()
        puts "这是实例才能调用的方法"
    end

    def self.class_show()
        puts "这是不需要实例化也能调用的类方法"
    end
end


class UniversityStudent < Student
    def say_english()
        puts "english"
    end

    def show()
        puts "已被重写"
    end

end

st = UniversityStudent.new("bob", 12, "man")
st.show()
st.say_english()

ruby新增方法,假设某个类已经写好了,现在想再给它加一个方法而不去动其原来的代码块,可以直接再写一遍并加上新加的方法

class Student

    attr_accessor :name  
    attr_reader :age 
    attr_writer :gender 

    Version = "1.0"  #类常量

    def initialize(name, age, gender)   #实例常量
        @name = name
        @age = age
        @gender = gender
    end

    def show()
        puts "这是实例才能调用的方法"
    end

    def self.class_show()
        puts "这是不需要实例化也能调用的类方法"
    end
end


class Student
    def new_method()
        puts "here is the new add method"
    end
end

st = Student.new("bob", 12, "man")
st.new_method()

模块的使用以及类中插入模块

module Md
    Md_v = "1.0"  

    def self.srun()   #模块自己的方法,无法被混入类中
        puts "use module"
    end

    def srun2()   #可以混入类中
        puts "use module 2"
    end
end

class Student
    include Md
end

puts Md::Md_v
puts Md.srun()
puts Student::Md_v

st = Student.new()
st.srun2()

 

posted @ 2022-10-07 15:50  克莱比-Kirby  阅读(46)  评论(0)    收藏  举报