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 ...
随机推荐
- 深入浅出WPF 第一部分(3)
3.2.3 属性元素 <Grid HorizontalAlignment="Center" VerticalAlignment="Center"> ...
- 【Oracle】使用bbed恢复delete的数据
表中的数据被delete之后并不会真正删除数据,而是打了一个删除标记,仅仅要还没有被覆盖就能够恢复回来. 实验步骤例如以下: SYS@ORCL>create table bbed_test(x ...
- atitit.jndi的架构与原理以及资源配置and单元測试实践
atitit.jndi的架构与原理以及资源配置and单元測试实践 1. jndi架构 1 2. jndi实现原理 3 3. jndi资源配置 3 3.1. resin <database> ...
- 《从0到1》读书笔记第2章"像1999 年那样狂欢"第1记:小结及词汇解析
小结 本章的目的应该是通过90年代末的互联网泡沫的背景,成因.影响,以及教训来教诫人们,在全部人都疯狂的抛身于洪流热潮之中时,我们要冷静的思考辨识出那些不切实际的大众观点,找到隐藏在这些观点后面的反主 ...
- xml中控件调用构造方法
系统控件view有三个构造方法,分别如下 public DrawView(Context context) { super(context); } public DrawView(Context co ...
- 学大伟业Day解题报告
预计分数:30+30+0=60 实际分数:30+20+0=50 题解部分全部来自http://www.cnblogs.com/TheRoadToTheGold/p/7723564.html T1htt ...
- Activemq去除认证
0.背景介绍 由于项目安全性的约束,不能在配置文件中暴露一些密码信息. 默认情况下,ActiveMQ在进行接发消息的时候会用户认证.通过ActiveMQ-client初始化ActiveMQConn ...
- win8用久了变得非常慢, 磁盘占用100%
完美解决方式: 直接重装win7 完美解决这个问题 在网上查了非常久也没找到有效方法, 求教
- Cocos2d-x 之大牛看法
(未完毕) cocos2d-x并非一个适合网游client(mmo)的游戏引擎.越是大型游戏,这个小引擎就越无法驾驭(尽管它很受欢迎). 之前我在原来的公司使用的是自主研发的C3引擎,已经对外开放(尚 ...
- ubuntu网络重启后或主机重启后,/etc/resolv.conf恢复原样的解决办法
ubuntu网络重启后或主机重启后,/etc/resolv.conf恢复原样的解决办法 /etc/resolv.conf中设置dns之后每次重启该文件会被覆盖,针对这种情况找了一些个解决方法 防止/e ...