热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Ruby之旅(二)Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用

(一)Ruby中一切都是对象,包括一个常数.比如可以用.class属性来查看一个对象的类型,你可以看下1.class,会发现常数1的类型是Fixnum,1不过是Fixnum的一个实

(一)Ruby中一切都是对象,包括一个常数.
比如可以用.class属性来查看一个对象的类型,你可以看下1.class,会发现常数1的类型是Fixnum,1不过是Fixnum的一个实例。还可以使用-37这个Fixnum的实例方法abs来取得绝对值:-37.abs()会返回37
又如输入一个1.1.class,会返回Float。

(二)Ruby语法
Ruby中的类以class开始 以end结束,类名首字母的约定是大写。
Ruby中的方法以def开始 以end结束,方法名首字母的约定是小写。
Ruby中的局部变量名首字母的约定是小写。
Ruby中的构造函数名称为initialize。
Ruby中的成员变量(实例变量)前导@符,在initialize里进行声明与初始化。
Ruby中的属性用attr_writer和attr_reader声明,分别对应c#的set,get,使用了attr_accessor是可读也可写
Ruby中的全局变量前导$符。
Ruby中的常数(常量)用大写字母开头,约定是全部大写。

Ruby中任何的表达式都会返回值,sample

Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用class Rectangle
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
def initialize(wdth, hgt)
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用    @width 
= wdth
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用    @height 
= hgt
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  end
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
def width=(wdth)
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用    @width 
= wdth
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  end
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用end
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
= Rectangle.new(2,3)
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用puts r.width 
= 5 #output 5
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
puts r.width # error! because the width not support read

继续补充下attr_accessor的使用,sample

Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
class Rectangle
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  attr_accessor :width
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  attr_accessor :height
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  attr_accessor :width2
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  attr_accessor :height2
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
def initialize(wdth, hgt)
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用    @width 
= wdth
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用    @height 
= hgt
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  end
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
def area()
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用    
return @width * @height
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  end
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
def area2()
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用    
return @width2 * @height2
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  end
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用end
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
= Rectangle.new(2,3)
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用r.width 
= 5 # give samename's variable value
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
r.height = 5 
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用puts r.area() 
#outputs is 25  
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用

Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用r.width2 
= 6 # not samename's variable  create
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
r.height2 = 6 
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用puts r.area2() 
# outputs is 36

上面的代码说明了,在使用attr_accessor的时候,会寻找是否有同名的成员变量,如果有则访问同名成员变量,如果没有会默认创建一个前导@的成员变量

 (三)神奇的操作符重载
Ruby支持操作符重载,而且很神奇!

Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
class Rectangle
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  attr_accessor :width
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  attr_accessor :height
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
def initialize(wdth, hgt)
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用    @width 
= wdth
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用    @height 
= hgt
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  end
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
def area()
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用    
return @width * @height
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  end
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
def +(addRectangle)
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用    
return self.area + addRectangle.area
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  end
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用end
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用r1 
= Rectangle.new(2,2)
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用r2 
= Rectangle.new(3,3)
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用puts r1
+r2 # operator override
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
puts r1+(r2)
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用puts r1.
+(r2) # standard function calling format

神奇吧,其实把+号理解为一个函数的名字最好不过了,就像最后一个写法,哈哈。

(四)参数的传递
参数的传递中有默认值与可变长参数两个比较有特点的地方,其他语言有的,ruby也有。

1.参数的默认值
默认值的设置很简单,与其他语言一样,sample

Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用class Rectangle
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  attr_accessor :width
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  attr_accessor :height
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
def initialize(wdth = 2, hgt = 2)
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用    @width 
= wdth
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用    @height 
= hgt
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  end
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
def area()
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用    
return @width * @height
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  end
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用end
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用r1 
= Rectangle.new
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用puts r1.area

看到了吧,使用默认值了


2.可选参数,可变长参数 sample

Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用class ParamSample
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
def sayHello(*names)
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用      puts names.
class
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用      puts 
"Hello #{names.join(",")}!"
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  end
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用  
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用end
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用ps 
= ParamSample.new
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用ps.sayHello 
#output Array Hello !
Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
ps.sayHello("lee","snake"#output Array Hello lee,snake!
可以看出,可变长参数前缀*号,可变长参数的实质是一个Array,呵呵。
推荐阅读
  • 闭包一直是Java社区中争论不断的话题,很多语言都支持闭包这个语言特性,闭包定义了一个依赖于外部环境的自由变量的函数,这个函数能够访问外部环境的变量。本文以JavaScript的一个闭包为例,介绍了闭包的定义和特性。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 小程序wxs中的时间格式化以及格式化时间和date时间互转
    本文介绍了在小程序wxs中进行时间格式化操作的问题,并提供了解决方法。同时还介绍了格式化时间和date时间的互相转换的方法。 ... [详细]
  • React基础篇一 - JSX语法扩展与使用
    本文介绍了React基础篇一中的JSX语法扩展与使用。JSX是一种JavaScript的语法扩展,用于描述React中的用户界面。文章详细介绍了在JSX中使用表达式的方法,并给出了一个示例代码。最后,提到了JSX在编译后会被转化为普通的JavaScript对象。 ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • 超级简单加解密工具的方案和功能
    本文介绍了一个超级简单的加解密工具的方案和功能。该工具可以读取文件头,并根据特定长度进行加密,加密后将加密部分写入源文件。同时,该工具也支持解密操作。加密和解密过程是可逆的。本文还提到了一些相关的功能和使用方法,并给出了Python代码示例。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • 本文介绍了在C#中SByte类型的GetHashCode方法,该方法用于获取当前SByte实例的HashCode。给出了该方法的语法和返回值,并提供了一个示例程序演示了该方法的使用。 ... [详细]
  • 本文讨论了如何使用GStreamer来删除H264格式视频文件中的中间部分,而不需要进行重编码。作者提出了使用gst_element_seek(...)函数来实现这个目标的思路,并提到遇到了一个解决不了的BUG。文章还列举了8个解决方案,希望能够得到更好的思路。 ... [详细]
author-avatar
勋酥-osh海州吴氏
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有