ruby基础语法
学不同语言,常将它们的基础语法搞混,例如if后面有没有(),后面是then还是:还是{,结尾是end还是}。
这种事情毫无技术含量又毫无乐趣可言,但极大地影响流畅度,所以这次再看ruby语法,决定把基础语法记下来,方便以后查看。
代码放到了这里,目前只有ruby,待以后用别的语言时再陆续添加。
内容如下,都是最基础的用法,需要时一看就明白。
#参考:《Ruby完全自学手册》第三章、第四章 #常量大写字母开头,变量小写字母开头
CHANG_LIANG = 1
bian_liang = 2
bian_liang = ""#弱类型 ##分支控制
#if
if 2 > 1 then
#
elsif 2>2 then
#
else
#
end
#if后置
puts "if后置" if 2 > 1
#unless
unless 2 > 1 then
#
else
#
end
#case
case 1+1
when 2 then
#
when 3 then
#
else
#
end ##循环控制
#while
while 1>2
#
end
#until
until 1<2
#
end
#for
for i in (1..3)
#
end
#foreach的另一种写法
(1..3).each do |i|
#可以用break和next控制,next相当于其他语言的continue
end ##面向对象
module MyModule#定义模块
#定义类
class MyClass#类名首字母大写
attr_accessor :myAttr#定义实例变量
def initialize
@myAttr2 = "@定义的实例变量"
end
public#访问控制级别public/protected/private
def myMethod#定义实例方法
puts "在实例方法中输出" + myAttr + @myAttr2
end
end
#继承
class MySubClass < MyClass
end
#定义模块方法
def moduleMethod
puts "MyModule的模块方法"
end
end#模块定义的end
#使用
myClass = MyModule::MyClass.new#实例化对象
myClass.myAttr = "实例变量的值"#为实例变量赋值
myClass.myMethod#调用实例方法
#动态添加方法
def myClass.newMethod
puts "动态添加的方法"
end
myClass.newMethod
#加载另一个文件中声明的模块中的类
load 'ruby_another_module.rb'
anotherClass = AnotherModule::AnotherClass.new#另一个文件中声明的对象
anotherClass.print#调用其方法
#混入
class UseMixin
include MyModule
extend MyModule
end
UseMixin.new.moduleMethod#include语句的作用,成为类的实例方法
UseMixin.moduleMethod#extend语句的作用,成为类的类方法 ##代码段
def blockMethod#调用代码段的方法,其中yield表示运行代码段
yield
end
blockMethod {puts "匿名代码段"}
#带参数的代码段
def blockMethodWithParam(arg, &b)#定义显式使用代码段的函数
b.call arg
end
block = Proc.new{|x| puts x}#定义非匿名代码段
blockMethodWithParam("非匿名代码段", &block)#使用非匿名代码段
blockMethodWithParam("也可以这样使用"){|x| puts x} ##异常处理
begin
#正常代码运行的地方
rescue Error#相当于其他语言的catch
#进行一些调整
retry#重新尝试执行
ensure
#相当于其他语言的finally,无论如何都会运行的地方
end ##基本类型
#整数
a=123_456#可以加下划线
b=0b101010#二进制
c=0123#八进制
d=0xaa#十六进制
e=?a#ascii码
puts d
#浮点数略
#字符串
str = "hello, world"
str = %{你好, "world"}#方便含有引号的内容
str[0] = "我"
puts str
#符号略
#区间
(1..3).each{|a| puts a}
#数组
[1,2,3].each{|a| puts a}
#字典
map = {"键甲"=>"键甲的值", "键乙"=>"键乙的值"}
puts map["键甲"]
#正则表达式
"ab12cd".scan(/\d/){|m| puts m}#正则表达式字面量
puts /\d/.match("ab12cd")[0]#match方法
长期欢迎项目合作机会介绍,项目收入10%用于酬谢介绍人。新浪微博:@冷镜,QQ:908789432。
ruby基础语法的更多相关文章
- 动静结合?Ruby 和 Java 的基础语法比较(入门篇)
前言 这篇文章示例代码比较多, Java 程序员可以看到一些 Ruby 相关语法和使用,Ruby 程序员可以看看 Java 的基本语法和使用方法,本文比较长,将近万字左右,预计需要十几分钟,如果有耐心 ...
- Sass的使用和基础语法
sass安装 官网下载ruby的windows安装包,安装时勾选上添加到环境变量add ruby executables to your path.安装完成后打开命令行,ruby -v输出内容则安装完 ...
- Ruby的语法糖
发现Ruby的语法糖好多,比如函数调用,参数列表可以写括号和不写括号.代码块可以用do end 或者 {}. 还有 if,unless后置.等等. 如果看Ruby代码看多了,你会发现,它很多地方的 ...
- Python学习的个人笔记(基础语法)
Python学习的个人笔记 题外话: 我是一个大二的计算机系的学生,这份python学习个人笔记是趁寒假这一周在慕课网,w3cschool,还有借鉴了一些博客,资料整理出来的,用于自己方便的时候查阅, ...
- Python学习笔记(Ⅰ)——Python程序结构与基础语法
作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了.不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的. 零.先抄书: 1.Py ...
- python基础语法及知识点总结
本文转载于星过无痕的博客http://www.cnblogs.com/linxiangpeng/p/6403991.html 在此表达对原创作者的感激之情,多谢星过无痕的分享!谢谢! Python学习 ...
- 1月10日 ruby基础教程,查漏补缺; 2月22日 Exception补充
https://ruby-doc.org/core-2.5.0/Exception.html 1月20日练习完1,2章. 第一章 初探 ‘’单引号不执行转义符. \t 制表符.\n 换行符. p me ...
- C#基础语法,快速上収C#
C#代码基础语法 对新手的帮助很大,可以尝试多看看然后在敲敲 // 单行注释以 // 开始 /* 多行注释是这样的 */ /// <summary> /// XML文档注释 /// < ...
- 3-Perl 基础语法
Perl 基础语法Perl借用了C.sed.awk.shell脚本以及很多其他编程语言的特性,语法与这些语言有些类似,也有自己的特点.Perl 程序有声明与语句组成,程序自上而下执行,包含了循环,条件 ...
随机推荐
- How parse REST service JSON response
1. get JSON responses and go to : http://json2csharp.com/ 2. write data contracts using C# All class ...
- CSS3是怎么实现全景特效?
很有意思的全景动画:(直接上代码) html部分: <div class="panorama"></div> css部分: .panorama{ width ...
- html制作一个美观的搜索框
一般情况下搜索栏就是form标签中的一个input标签. 如: <form> <input type="text" placeholder=" 搜索关键 ...
- 导入excle数据将excle数据插入到数据库
实现功能是,用户可以直接导入对应数据,或者用户下载模板,填写数据,导入模板数据.easyui实现 前台页面 { text : '日清导入', iconCls : 'icon-print', handl ...
- HelloWorld的Sprint计划会议
1.Sprint需求 编号 用户故事 故事价值 (点数) 1 作为一名小学生,我想要在玩电脑时玩一种 有趣的小游戏 2 作为一名不怎么爱玩大型游戏的白领(也喜欢玩迷宫游戏), 我想要玩一种可以在家 ...
- Java程序设计 实验二 Java面向对象程序设计
北京电子科技学院(BESTI) 实 验 报 告 课程:Java程序设计 班级:1353 姓名:李海空 学号:20135329 成绩: 指导教师:娄嘉鹏 ...
- AccessViolationException: 尝试读取或写入受保护的内存。这通常指示其他内存已损坏。
在使用SqlConnection.Open()连接到SQL Server 2008 R2 SP2时,一直报以下异常: AccessViolationException: 尝试读取或写入受保护的内存.这 ...
- centos安装vsftp
yum install -y vsftpd chkconfig vsftpd on 配置问价在/etc/vsftpd/下面 chroot_list 默认没有 必须自己建立 vi /etc/vsftpd ...
- asp.net identity 2.2.0 中角色启用和基本使用(七)提示点
在使用asp.net identity 2.2.0 中,大家可能设计到一些修改和配置 关于Identity的配置,在App_Start文件中的IdentityConfig.cs中,这里几乎有你需要的一 ...
- 通过方法名(字符串)执行Objective-C方法
SEL selector = NSSelectorFromString(@"方法名"); if ([self respondsToSelector:selector]){ //判断 ...