`
ttitfly
  • 浏览: 620261 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ruby基础二

阅读更多

参考 张开川的 ruby 语言入门教程

1. 等价语句

单引号里是什么就是什么,会照着输出。

ruby 代码
  1. a=5   
  2. b="hhhh"  
  3. print("a is ",a,"\n")   
  4. puts("a is #{a}")   
  5. puts('a is #{a}')
  6. 输出结果:   
  7. a is 5   
  8. a is 5  
  9. a is #{a}

 2.

ruby 代码
  1. #ruby支持缺省参数   
  2. def sum(a,b=5)   
  3.     a+b   
  4.   end  
  5.   puts sum(3,6) #输出结果为:9   
  6.   puts sum(3)#输出结果为8   
  7.      
  8. #ruby支持可变参数   
  9. def sum(*num)   
  10.     numSum = 0   
  11.     num.each{|i| numSum += i}   
  12.     return numSum   
  13.   end  
  14.      
  15.   puts sum() #输出结果为0   
  16.   puts sum(3,6)#输出结果为9   
  17.   puts sum(1,2,3,4,5,6,7,8,9)#输出结果为45   
  18.      
  19.   #ruby中如果一个类里有2个同名方法,总是后面的一个被执行  

 

 

3. ruby中的实例变量,类变量,类方法

实例变量:每个实例独享,变量名用@开头

类变量:所有实例共享,变量名用@@开头,类似java里的static变量,但是在使用前必须要初始化。

 类方法:不需要通过实例对象来调用。类方法定义方式: 类名.方法名,如:

ruby 代码
  1. def StudentClass.student_count   
  2.      puts "aaa"  
  3.    end  

如果在外部调用一个类里的常量,需要用到域作用符号"::"

4.ruby里的单例方法:给具体的某个实例对象添加方法,这个方法只属于这个实例对象的。这样的方法叫单例方法

定义单例方法,首先要生成一个实例对象,其次要在方法名前加上一个对象名和一个点号(.)

如:

ruby 代码
  1. class Person   
  2.         def talk   
  3.             puts "hi!"  
  4.           end  
  5.         end  
  6.            
  7.         p1 = Person.new  
  8.         p2 = Person.new  
  9.            
  10.         def p2.talk #定义单例方法p2.talk   
  11.             puts "Here is p2."  
  12.           end  
  13.         def p2.laugh   
  14.               puts "ha,ha,ha..."  
  15.         end  
  16.                
  17.         p1.talk    
  18.         p2.talk   
  19.         p2.laugh   
  20.   
  21. 输出结果为:   
  22. hi!   
  23. Here is p2.   
  24. ha,ha,ha...  

 5.访问控制

ruby 代码
  1. #访问控制   
  2. #public , protected, private   
  3. #public 方法,可以被定义它的类和其子类访问,可以被类和其子类的实例对象调用   
  4. #protected 方法,可以被定义它的类和其子类访问,不能被类和其子类的实例对象调用,但是 可以在类和其子类中制定给实例对象   
  5. #private 方法,可以被定义它的类和其子类访问,不能被类和其子类的实例对象调用,私有方法不能指定对象   
  6.   
  7. class Person   
  8.   public   
  9.   def talk   
  10.       puts "public:talk"  
  11.     end  
  12.   def speak   
  13.       "protected:speak"  
  14.     end  
  15.   def laugh   
  16.        "private:laugh"  
  17.      end  
  18.   protected :speak  
  19.   private :laugh  
  20.      
  21.   def useLaughTest(another)   
  22.         puts another.laugh #这里错误,私有方法不能指定对象   
  23.       end  
  24.          
  25.   def useSpeakTest(another)   
  26.       puts another.speak  #这里可以,,protected方法可以指定对象   
  27.     end  
  28. end  
  29.   
  30. class Student < Person   
  31.   def useLaugh   
  32.       puts laugh   
  33.     end  
  34.   def useSpeak   
  35.       puts speak   
  36.     end  
  37.   end  
  38.      
  39.   p1 = Person.new  
  40.   p1.talk   
  41.   #p1.speak 实例对象不能访问protected方法   
  42.   #p1.laugh 实例对象不能访问private方法   
  43.      
  44.   p2 = Student.new  
  45.   p2.useLaugh   
  46.   p2.useSpeak   
  47.     

输出结果为:

public:talk
private:laugh
protected:speak

分享到:
评论
2 楼 温柔一刀 2007-08-06  
<br/>
<strong>itsnotme 写道:</strong><br/>
<div class='quote_div'>
<p>对第二点的可变参数,如果参数本身多于一个,ruby会如何处理。</p>
<p>比如,</p>
<li class='alt'><span/><span class='keyword'>def</span><span> sum(*num1,num2)   </span> </li>
<li class=''><span>    numSum = 0   </span> </li>
<li class='alt'><span>    num1.</span><span class='keyword'>each</span><span>{</span><span class='variable'>|i</span><span>| numSum += i}   </span> </li>
<li class=''><span>    numSum = numSum - num2</span></li>
<li class=''><span>    </span><span class='keyword'>return</span><span> numSum   </span> </li>
<li class='alt'><span>  </span><span class='keyword'>end</span><span>  </span> </li>
<p class='alt'>puts(1,2,3,4,5,6)</p>
<p class='alt'>会输出什么?</p>
</div>
<br/>
<br/>
这样会忽略<span>num2这个参数</span><br/>
1 楼 itsnotme 2007-08-05  
<p>对第二点的可变参数,如果参数本身多于一个,ruby会如何处理。</p>
<p>比如,</p>
<li class='alt'><span/><span class='keyword'>def</span><span> sum(*num1,num2)   </span> </li>
<li class=''><span>    numSum = 0   </span> </li>
<li class='alt'><span>    num1.</span><span class='keyword'>each</span><span>{</span><span class='variable'>|i</span><span>| numSum += i}   </span> </li>
<li class=''><span>    numSum = numSum - num2</span></li>
<li class=''><span>    </span><span class='keyword'>return</span><span> numSum   </span> </li>
<li class='alt'><span>  </span><span class='keyword'>end</span><span>  </span> </li>
<p class='alt'>puts(1,2,3,4,5,6)</p>
<p class='alt'>会输出什么?</p>

相关推荐

    Ruby 基础语法 视频教程1

    这个"Ruby基础语法视频教程1"涵盖了几个关键的概念,包括变量、变量规则以及表达式。以下是对这些主题的详细解释: 1. 变量(Variables): 在Ruby中,变量用于存储数据,并在程序的不同位置使用。Ruby有五种不同...

    ruby基础教程中文第四版

    《Ruby基础教程(中文第四版)》是深入学习Ruby语言的重要参考资料,由Ruby之父亲自审校并作序推荐,其权威性和准确性不言而喻。 该书涵盖了Ruby的基础知识,包括但不限于以下内容: 1. **变量和常量**:Ruby中的...

    Ruby 语言基础(入门推荐)

    2. **动态类型**:在Ruby中,变量的类型是在运行时确定的,无需提前声明。这使得代码更简洁,但可能增加调试难度。 3. **块和闭包**:Ruby中的块是一段可以嵌套在函数内部的代码,可以与函数参数一起传递。闭包是...

    ruby基础学习资料

    在初学者的旅程中,掌握Ruby基础知识至关重要。这个“ruby基础学习资料”压缩包很显然是为那些想要入门或者深入理解Ruby的人准备的。让我们详细探讨一下Ruby的基础知识。 1. **变量与数据类型**: Ruby支持五种...

    ruby语言基础教程.ppt

    对于具备一定编程基础,工作1-3年的研发人员,本教程也是回顾和巩固Ruby基础知识的良好资料。 能学到什么: 1. Ruby语言的基本概念和特性,包括其脚本语言、面向对象、跨平台和开放源码软件的性质。 2. 如何使用...

    RUBY基础入门指南

    ### RUBY基础入门指南 #### 一、Ruby语言概述 **1.1 Ruby的历史** Ruby是一种面向对象的脚本语言,由日本人松本行弘(Yukihiro Matsumoto)于1995年开始开发。它结合了Perl的灵活性、Smalltalk的强大功能以及Ada...

    Ruby基础教程,RUBY入门必备啊~

    `03182919948.doc`这个文件名可能是Ruby基础教程文档的章节编号或者版本号。文档内容可能涵盖以下主题: 1. Ruby安装:如何在不同操作系统上安装Ruby环境。 2. 变量和数据类型:介绍Ruby中的局部变量、实例变量、类...

    ruby学习的源码

    1. **Ruby基础知识**: - 变量:Ruby支持局部变量、实例变量、类变量和全局变量,它们以不同的符号开头,如`@`、`$`等。 - 类与对象:Ruby是纯面向对象的语言,一切皆对象。类是创建对象的模板,可以包含属性...

    Ruby编程,Ruby编程,

    - **Ruby语言基础**:介绍了Ruby的基本语法、数据类型、控制结构等基础知识。 - **面向对象编程**:深入讲解了Ruby中的类、模块、继承等面向对象编程特性。 - **核心库和工具**:详细介绍了Ruby标准库中的一些...

    ruby笔记2ruby笔记2ruby笔记2

    "ruby笔记2ruby笔记2ruby笔记2"可能是指一系列关于Ruby学习的笔记,这些笔记可能涵盖了Ruby的基础概念、核心特性以及进阶话题。在Ruby的学习过程中,理解和掌握以下几个关键知识点至关重要: 1. **面向对象编程...

    Ruby基础语法使用方法全套讲解,风格讲解指南大全

    在这个"Ruby基础语法使用方法全套讲解,风格讲解指南大全"中,我们将深入探讨Ruby的核心特性,包括变量、数据类型、控制结构、函数、类和模块等基础知识。 1. **变量**:Ruby中的变量分为五种类型:局部变量(以...

    ruby on rails入门基础

    1. **Ruby语言基础**: - Ruby是一种面向对象的动态编程语言,语法简洁,易于阅读。在学习Rails之前,理解Ruby的基本语法、变量、数据类型、控制结构、类和对象等概念是必要的。 2. **安装Rails**: - 安装Ruby...

    Ruby完全自学手册

    1. Ruby基础语法:变量、常量、数据类型、运算符、控制结构等。 2. 面向对象编程:类与对象、继承、多态、封装、模块等。 3. 高级特性:块(Block)、迭代器(Iterator)、元编程、反射等。 4. 标准库的使用:文件...

Global site tag (gtag.js) - Google Analytics