首页 > 编程语言 >2022-12-2-ruby入门

2022-12-2-ruby入门

时间:2024-03-22 17:37:44浏览次数:21  
标签:do 12 end name puts game 2022 ruby def

第一个程序、定义类、打印方法、判断是否有方法属性、放开属性、数组、注释、字符串操作、字典、类型转换、静态方法、继承、模块、流程控制、循环、异常处理

第一个程序

def sayHello
    puts 'hello word'
end

sayHello

定义类

# 类名第一个字母必须大写
class Player
    def initialize(name = "zhanghuan")
        @name = name
    end
    def show()
        puts "hello,#{@name}"
    end
end

p = Player.new()
p.show()

打印方法

puts Player.instance_methods(false)

判断是否有方法、属性

if p.respond_to?("show")
    p.send("show")
end

放开属性

class Game
    attr_accessor :price,:title #开放属性,外部可以访问
    def initialize(title = "game1", price = 200)
        @title = title
        @price = price
    end
    def show()
        puts "标题:#{@title}"
        puts "价格:#{@price}"
    end
end

g = Game.new()

puts g.title #可访问

g.title = "game2"

puts g.title #可修改

数组

games = ["绝地求生","怪物猎人","埃尔登法环"]

# 输出
puts games

# 遍历
games.each do |game|
    puts "我爱 #{game}"
end

games.each_with_index do |game,i|
    puts "我爱 #{i} #{game}"
end

# 连接
puts games.join(",")

# 判断是否是数组
puts games.respond_to?("each")

注释

# 行注释

=begin
多行注释
=end

__END__
结束语

字符串操作

a = "hello"
b = "word"

# 字符串带入,相当于a = a + b
a << b
puts a

# 字符串重复
puts a * 4 

# 单引号和双引号的区别和shell脚本类似

字典

dic1={
    "a":1,
    "b":2
}

dic2={
    name:"zhanghuan",
    age:"20"
}
puts dic1[:a]
puts dic2[:name]

类型转换

a = "1"
b = "2"
c = "3"

puts a + b + c
# 字符串转数字
puts a.to_i + b.to_i + c.to_i
# 数字转字符串
puts (a.to_i + b.to_i + c.to_i).to_s + "AAA"

静态方法

class Game
    def initialize(name = "zhanghuan")
        @name = name
    end
    def show()
        puts @name.to_s
    end
    # 定义静态方法
    def self.toStr()
        puts "aaaaaa"
    end
end

game = Game.new()
game.show()
# game.toStr() 不可以这样写,因为实例hi无法调用静态方法的

Game.toStr()
Game::toStr()

继承

class SteamGame < Game
    def info
        puts "G胖"
    end
end

game = SteamGame.new()
game.info()

模块


module BaseFunc
    Version = "1.0"
    def v
        return Version
    end
    def add(a,b)
        return a + b
    end
    def self.showVersion
        return Version 
    end
    # 定义静态方法
    module_function :v
end

puts BaseFunc.v
puts BaseFunc.showVersion
puts BaseFunc::Version
# BaseFunc.add(10,20) 不可用


class BaseClass include BaseFunc
end

# 类包含模块后,模块中的方法不可直接用,要实例化后才可用
#puts BasClass.v 不可用
#puts BasClass::showVersion 不可用
puts BaseClass::Version

myCls = BaseClass.new
puts myCls.add(10,20)
# puts myCls.v 不可用

流程控制

point_per_game = 30

if point_per_game >= 30
    puts "3500万美元年薪"
elsif point_per_game >= 20
    puts "2500万美元年薪"
else
    puts "1500万美元年薪"
end

case point_per_game
    when 30
        puts "正好30"
    when 20
        puts "正好20"
    else
        puts "??"
    end

循环

languages = ["java","python","ruby"]

for item in languages do
    puts item
end

languages.each{
    |item|
    puts item
}

languages.each_with_index do |item,i|
    puts i.to_s + "." + item
end

# times循环
5.times do |i|
    puts i
end

# step循环
1.step(10,2) do |i|
    puts i
end

# upto
2.upto(5) do |i|
    puts i
end

# downto
5.downto(2) do |i|
    puts i
end

# 包含5
for i in 1..5 do
    puts i
end

# 不包含5
for i in 1...5 do
    puts i
end

index = 0
while index < 5 do
    puts index
    index += 1
end

index = 0
until index == 5 do
    puts index
    index += 1
end

异常处理

begin #try
    a = 1/0
rescue => e #catch
    puts e
else # 鸡肋
    puts "正常处理"
ensure # finally
    puts "扫尾"
end

标签:do,12,end,name,puts,game,2022,ruby,def
From: https://www.cnblogs.com/sylvesterzhang/p/18089901

相关文章

  • 2023-12-22-flink-cdc使用
    应用场景、上手体验应用场景FlinkCDC(ChangeDataCapture)是一种用于捕获和处理数据源中的变化的流处理技术。它可以实时地将数据源中的增量更新捕获到流处理作业中,使得作业可以实时响应数据变化。以下是FlinkCDC的一些常见应用场景:数据仓库和实时分析:FlinkCDC可以......
  • 2023-12-5-logstash和filebeat使用
    应用场景、组件介绍、logstash启动、filebeat启动应用场景分布式场景中,不同服务器的服务日志集中收集管理,方便排查问题组件介绍logstash日志收集器,将接受到的日志存储到ES中fielbeat日志解析器,将日志解析后通过网络发送给日志收集器logstash启动下载https://www.elastic......
  • 2020-8-12-Spring-Security
    资源访问控制方式、认证流程、授权流程、快速开始、授权案例、自定义登陆登出页面、会话管理、基于方法的授权资源访问控制方式基于角色的访问控制Role-BasedAccessControl基于资源的访问控制(常用)Resource-BasedAccessControl认证流程UsernamePasswordAuthenticatio......
  • 浮木云学习日志(12)---表格设计(二)
    上次做了一个包括表格的页面设计,个人认为关于表格设计的内容介绍比较笼统,可能没办法直接对这个组件进行透彻的了解,本次我就来详细介绍一下如何通过高级表格设计玩转表格设计。感兴趣的小伙伴可以去他们官网https://www.fumucloud.com/一起体验一下这个高级表格组件。本次记录我们......
  • mysql使用mysqldump.exe导出为sql脚本,进行导入时出现ERROR 1227 (42000) at line 18:
    mysql使用mysqldump.exe导出为sql脚本,进行导入时出现ERROR1227(42000)atline18:Accessdenied;youneed(atleastoneof)theSUPERorSYSTEM_VARIABLES_ADMINprivilege(s)forthisoperation。Warning:ApartialdumpfromaserverthathasGTIDswillbydefaul......
  • 「ABC124D」 Handstand
    题意给一个长度为\(n\)的01串\(s\),可以至多进行\(k\)次操作,每次操作可以把任意子串取反,求操作后最长的连续1串长度。分析\(n\)的范围“友好”地告诉我们最大\(O(n\logn)\)。最开始想的是把每一块分出来跑dp,然后发现写不出来\(O(n)\)的式子。(去世)想了一会后注......
  • Windows server 系统 AD域、加入域——无法加入 Windows Server 2012 R2 或 Windows 7
    目录前言症状原因解决方案更多信息前言       大家好,我是你可知这世上再难遇我 创作者,最近工作中做项目的时候,做Windows服务器数据迁移,前期得加入前服务器的AD域控中,经过一天从早到晚,最终在下班后找到解决方法,现在分享一下我当时最后的解决问题的方式!......
  • Python函数每日一讲12 - len()
    引言在Python编程中,经常会遇到需要获取对象的长度或者元素个数的情况。而len()函数就是用来返回对象的长度或者元素个数的。通过本文的介绍,你将学习到len()函数的基本用法以及在实际应用中的一些技巧,帮助你更好地利用这一函数解决问题。语句概览len()函数用于返回对象的长度或......
  • 【题目】【网络系统管理】2022年甘肃省职业院校技能大赛-系统服务-试卷
    2022年甘肃省职业院校技能大赛高职组网络系统管理竞赛系统服务模块试题目录一、竞赛介绍…1(一)环境登录…1(二)系统配置…1(三)竞赛环境…1二、竞赛注意事项…1三、竞赛结果文件的提交…2四、Linux项目任务描述…2(一)拓扑图…2(二)基本配置…3五、Linux项目任务清......
  • Visual Studio 插件 AnAPI++ for VS 2022
    AnmialAPIabbreviationAnAPI++isanautomaticallygeneratedWebAPIprojectthathasencapsulatedJwtOauth2tokenauthentication,SqlSugar,Swagger,Nlog,Crossdomaintechnologies,andsupportsNet6andaboveversionsAnmialAPI缩写AnAPI++是一个自动生成的We......