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 ...
随机推荐
- 【Struts2】Struts2纯手工安装、配置以及Helloworld,以最新版struts 2.3.20 GA做样例
很多网上的教程对Struts2的配置.安装弄得不明不白,非常多高手以为小白是什么都懂.很多细节上面的地方没有说明清楚,甚至还有在Maven上面解说的,要知道Struts2跟Maven没有半点的关系.全 ...
- 正确地在QML应用中使用fontsize
我们知道我们有时须要显示text文本.可是,在QML应用中.我们应该怎样选择font的大小呢?在今天的这篇文章中,我们将展示在Ubuntu平台中的不同文字的大小.我们能够通过FontUtils来帮我们 ...
- Android全局退出的两种方法
第一种方法参考<第一行代码>78页 建立一个ActivityCollector类,提供静态方法addActivity,fininshAll(以list为容器) 然后我们建立的Activit ...
- 洛谷P2192 HXY玩卡片
题目描述 HXY得到了一些卡片,这些卡片上标有数字0或5.现在她可以选择其中一些卡片排成一列,使得排出的一列数字组成的数最大,且满足被90整除这个条件.同时这个数不能含有前导0,即0不能作为这串数的首 ...
- web api 特点
webapi有很多特点(我不想用优点这个词),比如说restful,支持路由,简单,类似mvc controller/action的代码编写方式,灵活的托管方式,和web的集成等等. Web API的 ...
- 玲珑学院 1052 - See car
1052 - See car Time Limit:2s Memory Limit:64MByte Submissions:594Solved:227 DESCRIPTION You are the ...
- Web开发中,使用表格来展示每个角色对应的权限
通过表格这种方式,来展示角色和权限之间的关系,挺好的.还有很多场景,都可以用这种方式. 角色权限表 权限 系统管理员 文章管理员 相册管理员 留言管理员 个人信息管理 查看个人信息 √ √ √ √ 编 ...
- UVa10397_Connect the Campus(最小生成树)(小白书图论专题)
解题报告 题目传送门 题意: 使得学校网络互通的最小花费,一些楼的线路已经有了. 思路: 存在的线路当然全都利用那样花费肯定最小,把存在的线路当成花费0,求最小生成树 #include <ios ...
- android中图片倒影、圆角效果重绘
本文用来记录一些Android 操作图片的方法,方便查看. 1.将Drawable转化为Bitmap public static Bitmap drawableToBitmap(Drawable dr ...
- Web页面转换成Word文件,利用wordXML
简介:处理流程表单数据以WordXML形式填充Word文档表格换行符丢失问题 //将前台收集的XML中“$”循环拆分成"<w:br/>" by pengyc 解决表格填 ...