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 程序有声明与语句组成,程序自上而下执行,包含了循环,条件 ...
随机推荐
- cat命令在文件中插入内容
eg: cat>> xxx <<EOFinsert 1insert 2 EOF
- 函数响应式编程(FRP)—基础概念篇
原文出处:http://ios.jobbole.com/86815/. 一函数响应式编程 说到函数响应式编程,就不得不提到函数式编程,他们俩有什么关系呢?今天我们就详细的解析一下他们的关系. 现在下面 ...
- Java FTPClient实现文件上传下载
在JAVA程序中,经常需要和FTP打交道,比如向FTP服务器上传文件.下载文件,本文简单介绍如何利用jakarta commons中的FTPClient(在commons-net包中)实现上传下载文件 ...
- HttpClient模拟http请求
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且 ...
- ASP.NET中如何读取和写入注册表
直接给源码: 读取注册表内容: RegistryKey regkey=Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Window ...
- BizTalk开发系列(二十五) SQL Adapter
SQL Server 是.NET开发的首选数据库.当然开发BizTalk应用程序很多也离不了SQL Server.针对SQL Server的数据操作BizTalk 提供了SQL Adapter作为与数 ...
- ASCII码
ASCII(pronunciation: /ˈæski/ ASS-kee,American Standard Code for Information Interchange,美国信息交换标准代码)是 ...
- IOS第18天(4,核心动画,时钟效果,定时器,图片旋转角度,CALayer 锚点,获取当前,小时,秒,分)
**** #import "HMViewController.h" // 每秒秒针转6度 #define perSecendA 6 // 每分钟分针转6度 #define perM ...
- 基于 ThinkPHP 3.2.3 的页面静态化功能的实现
PHP 的页面静态化有多种实现方式,比如使用输出缓冲(output buffering),该种方式是把数据缓存在 PHP 的缓冲区(内存)中,下一次取数据时直接从缓冲区中读取数据,从而避免了脚本的编译 ...
- python 安装 twisted 库
pip 安装twisted库需要先安装依赖包,不然报"error: command 'gcc' failed with exit status 1" # yum install g ...