首发:个人博客,更新&纠错&回复

学不同语言,常将它们的基础语法搞混,例如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基础语法的更多相关文章

  1. 动静结合?Ruby 和 Java 的基础语法比较(入门篇)

    前言 这篇文章示例代码比较多, Java 程序员可以看到一些 Ruby 相关语法和使用,Ruby 程序员可以看看 Java 的基本语法和使用方法,本文比较长,将近万字左右,预计需要十几分钟,如果有耐心 ...

  2. Sass的使用和基础语法

    sass安装 官网下载ruby的windows安装包,安装时勾选上添加到环境变量add ruby executables to your path.安装完成后打开命令行,ruby -v输出内容则安装完 ...

  3. Ruby的语法糖

    发现Ruby的语法糖好多,比如函数调用,参数列表可以写括号和不写括号.代码块可以用do end 或者 {}.   还有 if,unless后置.等等. 如果看Ruby代码看多了,你会发现,它很多地方的 ...

  4. Python学习的个人笔记(基础语法)

    Python学习的个人笔记 题外话: 我是一个大二的计算机系的学生,这份python学习个人笔记是趁寒假这一周在慕课网,w3cschool,还有借鉴了一些博客,资料整理出来的,用于自己方便的时候查阅, ...

  5. Python学习笔记(Ⅰ)——Python程序结构与基础语法

    作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了.不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的. 零.先抄书: 1.Py ...

  6. python基础语法及知识点总结

    本文转载于星过无痕的博客http://www.cnblogs.com/linxiangpeng/p/6403991.html 在此表达对原创作者的感激之情,多谢星过无痕的分享!谢谢! Python学习 ...

  7. 1月10日 ruby基础教程,查漏补缺; 2月22日 Exception补充

    https://ruby-doc.org/core-2.5.0/Exception.html 1月20日练习完1,2章. 第一章 初探 ‘’单引号不执行转义符. \t 制表符.\n 换行符. p me ...

  8. C#基础语法,快速上収C#

    C#代码基础语法 对新手的帮助很大,可以尝试多看看然后在敲敲 // 单行注释以 // 开始 /* 多行注释是这样的 */ /// <summary> /// XML文档注释 /// < ...

  9. 3-Perl 基础语法

    Perl 基础语法Perl借用了C.sed.awk.shell脚本以及很多其他编程语言的特性,语法与这些语言有些类似,也有自己的特点.Perl 程序有声明与语句组成,程序自上而下执行,包含了循环,条件 ...

随机推荐

  1. URL编码:不同的操作系统、不同的浏览器、不同的网页字符集,将导致完全不同的编码结果。

    URL编码:不同的操作系统.不同的浏览器.不同的网页字符集,将导致完全不同的编码结果. 因此如果Url中有中文或特殊字符,一定要自己调用函数编码解码,不要让浏览器帮你编码,否则出现了问题会浪费你很多时 ...

  2. Jenkins 2.7.3 LTS 发布

    更新如下: Stop A/B testing of the remoting JNLP3 protocol due to the known issues. The protocol can be e ...

  3. [CareerCup] 17.1 Swap Number In Place 互换位置

    17.1 Write a function to swap a number in place (that is, without temporary variables). 这道题让我们交换两个数, ...

  4. css中margin-left与left的区别

    研究下拉菜单和弹出菜单时比较所得: 1.直接在css中设置left生效的前提是必须设置父容器position:absolute或relative,如果不设置则会显示为最近一个定位的父对象左边相关的位置 ...

  5. Android-----工程文件目录介绍

  6. 云计算仿真软件Cloudsim介绍以及类的功能介绍

    一·云计算的介绍 云计算仿真软件,称为CloudSim.它是在离散事件模拟包SimJava上开发的函数库,可在Windows和Linux系统上跨平台运行,CloudSim继承了GridSim的编程模型 ...

  7. HTML5初学篇章_3

    表单的标签是<form>,它使页面与客户的互动成为可能.而它的大部分元素字自HTML2.0后就没有再改变过,由此可见这是一个多么具有卓越性的设计. <form>标签是用于创建供 ...

  8. 对C++下struct 和 类默认继承的认识

    #include <iostream> using namespace std; struct struct1{ int data1 ; double data2 ; struct1(){ ...

  9. sqlplus 初始化文件(每一次打开sqlplus不用重新设置 linesize 和 pagesize)

    初始化文件目录  D:\oracle\product\11.2.0\dbhome_1\sqlplus\admin\glogin.sql 用记事本打开,添加 --SET linesize 150SET ...

  10. Python的正则表达式笔记

    1. "先抓大再抓小": 遇到一个正则表达式无法一次性筛选出所需内容时, 可以先在一个范围内筛选第一次, 再在小范围中筛选第二次. 2. pattern = re.compile( ...