Ruby(面向对象程序设计的脚本语言)入门
Ruby是一种为简单快捷的面向对象编程(面向对象程序设计)而创的脚本语言。
简单介绍
- Ruby 是开源的,在Web上免费提供,但须要一个许可证。
- Ruby 是一种通用的、解释的编程语言。
- Ruby 是一种真正的面向对象编程语言。
- Ruby 是一种类似于 Python 和 Perl 的server端脚本语言。
- Ruby 能够用来编写通用网关接口(CGI)脚本。
- Ruby 能够被嵌入到超文本标记语言(HTML)。
- Ruby 语法简单,这使得新的开发者可以高速轻松地学习 Ruby。
- Ruby 与 C++ 和 Perl 等很多编程语言有着类似的语法。
- Ruby 可扩展性强,用 Ruby 编写的大程序易于维护。
- Ruby 可用于开发的 Internet 和 Intranet 应用程序。
- Ruby 能够安装在 Windows 和 POSIX 环境中。
- Ruby 支持很多 GUI 工具,比方 Tcl/Tk、GTK 和 OpenGL。
- Ruby 能够非常easy地连接到 DB2、MySQL、Oracle 和 Sybase。
- Ruby 有丰富的内置函数,能够直接在 Ruby 脚本中使用。
特点
Ruby中的keyword例如以下:
模块定义:module
类定义: class
方法定义:def,undef
检查类型:defined?
条件语句:if,then,else,elsif,case,when,unless
循环语句:for,in,while,until,next,break,do,redo,retry,yield
逻辑推断:not,and,or
逻辑值: true,false
空值: nil
异常处理:rescue,ensure
对象引用:super,self
块的起始:begin/end
嵌入模块:BEGIN,END
文件相关:__FILE__,__LINE__
方法返回:return
别名: alias
注:BEGIN模块相当于C语言中的宏, END模块用来作一些收尾工作。有了require,include,应该取消BEGIN和END的语法定义。
ruby中的运算符例如以下:优先级(由高到低)
[]、[]= 数组下标、数组元素赋值
** 乘冥
!、~、+、- 非、位非、一元加(正号)、负号
*、/、% 乘、除、模
+、- 加、减
>>、<< 右移、左移
& 位与
^、| 位异或、位或
<=、<、>、>= 小于等于、小于、大于、大于等于
<=>、==、===、=~、!=、!~ 各种相等推断(不能重写=~、!=、!~)
&& 短路与
|| 短路或
..、... 区间的開始点到结束点
? : 三元条件运算符
=、%=、~=、/=、-=、+=、|=、&=、>>=、<<=、*=、&&=、||=、**= 各种赋值
defined? 检查类型
not 逻辑非
or、and 逻辑或、逻辑与
if、unless、while、until 推断与循环
begin、end 定义方法,类,模块的范围
注意:
值得注意的是,ruby中没有"++"、"--"一类的运算符,但能够通过"+=1"、"-=1"实现。
ruby标识符的一些约定:
局部变量以小写字母或者下划线开头
全局变量以美元符号开头。
实例变量以@开头
类变量以@@开头
常量或类名以大写字母开头。
ruby中的nilkeyword非常特别。nil表示一个与其它语言中null相类似的空集的概念。和其它语言不通的是,ruby在逻辑推断过程中,仅仅有nul和false表示假,其它全部表达式都表示真。
ruby中的方法
如今就来编写一个ruby中的方法,写一个最简单的hello
def say_hello(name)
result="hello,"+name
return result
end
puts say_hello("oec2003") #返回hello,oec2003
能够看到ruby中的方法是以keyworddef定义的后面跟方法名,以end结束,习惯了c#和java,可能会感到不适非常习惯。在方法的内部语句中,假设每条语句都是放在单独的一行,语句的后面就不必加分号。
ruby中的类
ruby中的类相同是以keywordclass来定义,随后是类名
class Oec2003
end
在rails中类通常都会继承Base基类
class Oec2003<ActiveRecord::Base
end
表示Oec2003继承Base基类,ruby中的继承是用<实现,Base基类属于模块ActiveRecord中
ruby类中的方法能够加訪问修饰符来限制訪问级别
class Oec2003
def method1 #没有加不论什么修饰符,默觉得public
end
protected
def method2 #修饰符为proteted ,注意修饰符是写在方法的上面
end
private
def method3
end
end
ruby中的模块
模块和类有点相似,他们都包括一组方法,常量以及其它的类和模块的定义,和类不同的是模块不能创建实例。
模块的用途有两个。第一:起到了命名空间的作用,使方法的名字不会冲突。第二:能够使在不同类之间共享相同的功能。假设一个类混入了一个模块,那么这个类就拥有模块中全部的实例方法,就好像是在类中定义的一样
module Oec2003
end
ruby中的控制结构
条件推断语句:条件中推断是否相等使用==,注意不要写成了=
if count>10
puts "count 大于10"
elsif count==10 #注意此处是elsif 而不是elseif
puts "count等于10”
else
puts "count小于10"
end
循环语句:
while循环
while age<30
puts age
age=+1
end
单行while
age=age+1 while age<30
until 循环
a=1
until a>=10
puts a
a+=1
end
for..in..循环
for i in 1..9
puts i,""
end
Ruby(面向对象程序设计的脚本语言)入门的更多相关文章
- (五)Lua脚本语言入门
---恢复内容开始--- 写完这篇Lua脚本语言入门,自己就要尝试去用Lua脚本语言写esp8266了,,自己现在挺心急的,因为朋友使用esp8266本来说自己帮忙写好程序的,但是用的单片机不一样自己 ...
- (一)Lua脚本语言入门
今天开始自己的Lua语言学习,Lua脚本语言,是介于应用程序和开发其应用程序的底层编程语言之间,,它很方便调用其它语言,它只是在载入时对其进行编译,而不像我们写的单片机程序是预编译的,先编译好然后写入 ...
- (三)Lua脚本语言入门
又要找工作了,变的忧虑了,唯有学习才让内心变得踏实,今天玩了一下午的王者荣耀,正事都忘了...... 如果认为所谓的毅力是每分每秒的"艰苦忍耐"式的奋斗,那这是一种很不足的心理状态 ...
- (三)Lua脚本语言入门(数组)
又要找工作了,变的忧虑了,唯有学习才让内心变得踏实,今天玩了一下午的王者荣耀,正事都忘了...... 如果认为所谓的毅力是每分每秒的“艰苦忍耐”式的奋斗,那这是一种很不足的心理状态.毅力是一种习惯,毅 ...
- Lua脚本语言入门学习其应用教程
Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用.不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,Ini等文件格式,并且更 ...
- elsearch搜索引擎 + painless脚本语言入门
最近项目用到了elsearch,ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎. 自从版本6.0之后,其默认脚本语言变为 painless . ...
- Lua游戏脚本语言入门(一)
作者: 沐枫 (第二人生成员) 原文地址:http://job.17173.com/content/2009-01-22/20090122143452606,1.shtml 在这篇文章中,我想向大家介 ...
- (二)Lua脚本语言入门
上一篇文章忘了插入代码了,方便粘贴复制...... 函数 对于c语言就是 void aa()//c语言是用void { print("这是一个函数") } Lua就变成了 func ...
- (二)Lua脚本语言入门(关于函数)
上一篇文章忘了插入代码了,方便粘贴复制...... 函数 对于c语言就是 void aa()//c语言是用void { print("这是一个函数") } Lua就变成了 func ...
随机推荐
- HTTP基础知识整理
http请求由三部分组成,分别是:请求行.消息报头.请求正文 HTTP(超文本传输协议)是一个基于请求与响应模式的.无状态的.应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接 ...
- js对数组进行操作
1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限, ...
- DbSet<>.Find()
第一篇为大家带来新的API,DbSet<>.Find(). 过去我们常常用Where或First(FirstOrDefault)方法来查找对应的实体,比如: var people = fr ...
- 关于html(meta的常用的用法)
http://www.haorooms.com/post/html_meta_ds
- spark源码编译,本地调试
1.下载源码 2.进入源码根据README.md编译源码,注意使用的是源码目录下的maven编译 3.用idea导入顶层pom文件 4.修改顶层pom文件和example下的pom文件,将scope的 ...
- 终结者:借助pinyin4j相关jar包提取汉字的首字母
import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinCase ...
- struct数组初始化
const int MAXN=100; struct A { int a,b; }; struct A arr[100];//此时编译通过 struct A arr[MAXN];//此时编译不通过,原 ...
- the resource is not on the build path of a java project错误
在eclipse中,使用mavenimport了一个工程,但是在对某一个类进行F3/F4/ctrl+alt+H操作的时候报错:“the resource is not on the build pat ...
- 洛谷P1316 丢瓶盖
题目描述 陶陶是个贪玩的孩子,他在地上丢了A个瓶盖,为了简化问题,我们可以当作这A个瓶盖丢在一条直线上,现在他想从这些瓶盖里找出B个,使得距离最近的2个距离最大,他想知道,最大可以到多少呢? 输入输出 ...
- Android线程间通讯的几种方式
1.runOnUiThread(Runnable) 在子线程中直接使用该方法,可以更新UI runOnUiThread(new Runnable(){//更新UI ...