Ruby语法基础(一)
Ruby语法基础(一)
Ruby是一种开源的面向对象程序设计的服务器端脚本语言,最初由松本行弘(Matz)设计开发,追求『快乐和生产力』,程序员友好型,被称为『human-oriented language』
hello world
首先打开vim
$ vim hello.rb
编写helloworld代码
puts "hello world!"
保存后运行
$ ruby hello.rb
hello world! # 运行结果
ruby也可以在命令行中键入irb,打开命令行交互模式,类似中Python的shell
Here Document
puts <<EOF
这是一种here document
是一种多行字符串
可以用来写大段文档
EOF
Begin&END
puts '这是主Ruby脚本'
# end语句会在程序的结尾被调用
END{
puts '停止Ruby程序'
}
# begin语句会在程序的开始被调用
BEGIN{
puts '初始化Ruby程序'
}
注释
=begin
单行注释用#
多行注释用=begin .... =end
=end
puts '测试注释'
基本数据类型
数值类型Number
a = 123_123 # 十进制可以加下划线
b = 0x377 # 十六进制表示
c =0b1011 # 二进制表示
d = 6.32E-32 # 科学记数法表示
puts a, b, c, d
字符串类型(String)
- 单引号中的内容不会被转义
- 双引号中的内容会被转义,#{}内的脚本会被执行
name = 'world'
puts 'hello\tname'
puts "hello\t#{name.upcase}"
puts "24*20*35=#{24*20+35}" # 计算并转成字符串
运行结果:
hello\tname
hello WORLD
24*20*35=515
#{ expr }可以执行expr脚本并转换成字符串
数组(Array)
类似于Python中的list,支持[]索引,插入,删除,替换,集合间运算
a = ['fred',
10,
3.14,
'String',
'last'
]
a.each do |i|
print i,"!\n"
end
哈希(Hash or Dictionary)
hsh = {
:red=>0xf00, # 字符串作为key的情况下,用symbol比较好
:green => 0x0f0,
:blue => 0x00f
}
hsh.each do |key, value|
print key, ' is ', value, "\n"
end
范围(Range)
(10..15).each do
|i|
print i, ' '
end
类和对象
# 定义类
class Customer
# 类变量
@@nu_of_customer = 0
def initialize(id, name, addr)
# 属于实例本身的实例变量
@cust_id = id
@cust_name = name
@cust_addr = addr
@@nu_of_customer += 1
end
# 显示细节的函数
def show
puts "Customer id #{@cust_id}"
puts "Customer name #{@cust_name}"
puts "Customer addr #{@cust_addr}"
end
def show_total
puts "Total number of customers: #@@nu_of_customer"
end
end
# 创建对象
cust1 = Customer.new('1','John','Wisdom Apartments, Ludhiya')
cust2 = Customer.new('2','Poul','New Empire road, Khandala')
# 调用方法
cust1.show
cust2.show
cust1.show_total
运行结果
Customer id 1
Customer name John
Customer addr Wisdom Apartments, Ludhiya
Customer id 2
Customer name Poul
Customer addr New Empire road, Khandala
Total number of customers: 2
变量
全局变量
以$开头,不建议使用
def f1
$global_variable += 1
puts "f1: $global_variable = #{$global_variable}"
end
# 全局变量用$开头
$global_variable = 0
puts "main: $global_variable = #{$global_variable}"
f1
puts "main: $global_variable = #{$global_variable}"
运算结果
main: $global_variable = 0
f1: $global_variable = 1
main: $global_variable = 1
实例变量
以@开头,属于实例本身,另外ruby体现数据与操作结合,外部不可以直接修改实例变量本身,博主认为这个面向对象很彻底
class Sample
def initialize
@x = 0 # 初始化后使用
end
def get_x
@x
end
def set_x(x)
@x = x
end
end
s = Sample.new
s.set_x 2 # 命令行的传参风格
puts s.get_x
类变量
类变量以@@开头,必须初始化后使用。类变量在定义它的类或模块的子类的子类或子模块中可以共享,例子上面讲类和对象时已经指出
局部变量
局部变量以小写字母或者_开头,生命周期从class、module、def或do到相应的end,或者两个括号之间。一旦出作用域就直接释放
def sample_func
x = 1
puts x
end
sample_func
# puts x 报错undefined local variable or method `x' for main:Object (NameError)
常量
- 常量用大写字母开头
- 定义在类或模块内的常数可以从类或模块的内部访问,定义在类或模块外的常量可以被全局访问
- 常量不能定义在方法内部
class Example
VAR1 = 100
VAR2 = 200
def show
puts "VAR1=#{VAR1}"
puts "VAR1=#{VAR2}"
end
end
obj = Example.new
obj.show
运行结果
VAR1=100
VAR1=200
伪变量
类似于pyhton或PHP中的魔法常量,只能读不能写
- self: 当前方法的接收器对象。
- true:代表 true 的值。
- false: 代表 false 的值。
- nil: 代表 undefined 的值。
- __FILE__: 当前源文件的名称。
- __LINE__: 当前行在源文件中的编号
小结
本文也就对于ruby有了快速的感性认识,进一步的学习还要继续学习
参考教程菜鸟教程
Ruby语法基础(一)的更多相关文章
- Ruby语法基础(三)
Ruby语法基础(三) 在前面快速入之后,这次加深对基本概念的理解. 字符串 Ruby字符串可以分为单引号字符串和双引号字符串,单引号字符串效率更高,但双引号的支持转义和运行 puts '单引 ...
- Ruby语法基础(二)
Ruby语法基础(二) 继续ruby的学习,这次主要把目光放到运算符,条件判断,循环,方法,以及其他ruby特有的基本概念上 运算符 算术运算符:+,-,/,%,**,值的注意的是,ruby中一切皆为 ...
- 3.ruby语法基础,全部变量,实例变量,类变量,局部变量的使用和注意的要点
1.ruby的全局变量的概念和Java的全局变量的概念不同, ruby的全局变量是以$符号开头的,如果给全局变量的初始化值为nil会出现警告. 赋值给全局变量,这是ruby不推荐的,这样会使程序变得很 ...
- ruby之基础语法
ruby语法之哈希 =>相当于python的字典 ruby语法之数组 =>相当于python的列表 举例: gitaly= Hash.new #建立新Hash类型 gitaly['firs ...
- JAVA 入门第一章(语法基础)
本人初学java 博客分享记录一下自己的学习历程 java我的初步学习分为六章,有c和c++的基础学起来也简便了很多. 第一章 语法基础 第二章 面向对象 第三章 常用工具类 第四章 文件操纵 第五章 ...
- python基础入门一(语法基础)
作为自己正式接触并应用的第一门编程语言,在Alex和武sir两位大王的要求下,开始了写博客总结的日子.学习编程语言是很有趣的一件事情,但有2点请一定要谨记:1.做人靠自己,码代码也必须靠自己.能不能成 ...
- PHP语法基础
1.PHP语法基础 PHP标记符 <?php ?> 常亮与变量 $a = 10; 变量 可以在运行过程中修改 $a = 10; $a = 20; $b = 5; echo $a+$b; c ...
- Verilog语法基础讲解之参数化设计
Verilog语法基础讲解之参数化设计 在Verilog语法中,可以实现参数化设计.所谓参数化设计,就是在一个功能模块中,对于一个常量,其值在不同的应用场合需要设置为不同的置,则将此值在设计时使用 ...
- C#语法基础和面向对象编程
1.C#语法基础 http://www.cnblogs.com/tonney/archive/2011/03/16/1986456.html 2.C#与面向对象基础 很棒的资源,简明扼要,介绍的非常清 ...
随机推荐
- fastjson如何判断JSONObject和JSONArray
1.fastjson如何判断JSONObject和JSONArray,百度一下,教程还真不少,但是是阿里的fastjson的我是没有找到合适的方法.这里用一个还算可以的方法,算是实现了这个效果. 网上 ...
- [LeetCode] Best Time to Buy and Sell Stock 6道合集【DP】
1. Best Time to Buy and Sell Stock 2. Best Time to Buy and Sell Stock II 3. Best Time to Buy and Sel ...
- mysql表管理
4.1 查看所有表 查看所有表语句: show tables; 例: mysql> show tables; +-----------------+ | Tables_in_emp | +--- ...
- tomcat 反代配置
tomcat反代可以基于nginx , http进行反代 反代服务器: 有两个网口 反代服务器一般有两块网卡一块处于外网,一块处于内网用于与后端服务器通信 tomcat 节点处于内网地址 1 tom ...
- 51Nod1123 X^A Mod B 数论 中国剩余定理 原根 BSGS
原文链接https://www.cnblogs.com/zhouzhendong/p/51Nod1123.html 题目传送门 - 51Nod1123 题意 $T$ 组数据. 给定 $A,B,C$,求 ...
- 做生活的有心人——xxx系统第一阶段总结
2017秋,桃子已经步入大学三年级了,觉得格外幸运 因为现在,有了学习的动力. 如果你和我一样也是在大学中后部分才意识到,自己是个大人了,思维模式开始转变开始融入一些前所未有的认知,觉得自己渺小得如沧 ...
- P1012 拼数 字符串
题目描述 设有nn个正整数(n≤20)(n≤20),将它们联接成一排,组成一个最大的多位整数. 例如:n=3n=3时,33个整数1313,312312,343343联接成的最大整数为:34331213 ...
- Linux 常用基本指令
1.ls 参数: -a:列出所有目录(“.”开头的是隐藏文件) -l: 以长格式列出目录下的内容列表 2.cd cd 切换到家目录 cd ~ 切换到家目录 cd .. 切换到上一级目录 3.pwd ...
- 6、Qt Project之音视频播放
音视频播放 这里简单的制作了一个音乐播放器,播放器的界面设计如下所示: Step1:这里是界面对应的HTML文件: <?xml version="1.0" encoding ...
- Python 获取计算机全名(fully qualified host name)
Python 获取计算机全名(fully qualified host name) import socket socket.getfqdn() socket.gethostname()