zoukankan      html  css  js  c++  java
  • Ruby学习札记(四) 类 函数 代码块

    1、关键字:

    追加类——类中的方法可在的同名类文件中追加

    嵌套类——类中可嵌套类,也可在外部定义嵌套类

    特殊类——可为对象添加单独的类,以定义特殊的方法和属性(相应的有特殊方法)

    类方法——顾名思义,通过类方式调用的方法,非对象方法

    #追加类
    class Animal
      def put
        puts "这是Put方法"
      end
      def Animal.show
        puts "这是Animal类的Show方法"
      end
    end
    
    class Animal
      def show
        puts "这是show方法"
      end
    end
    
    a=Animal.new
    a.put
    a.show
    
    #嵌套类
    class Animal::Head
      def put
        puts "这是Head类的put方法"
      end
    end
    
    h=Animal::Head.new
    h.put
    
    #特殊类
    class<<h
      def put
        puts "这是特殊类里的Put方法"
      end
    end
    
    h.put
    
    def h.show
      puts "我是h的Show方法"
    end
    
    puts h.show
    puts Animal.show
    

    2、在程序文件顶层定义的实例变量对整个应用程序中顶层的表达式和函数都有效;

    在类和模块中定义的实例变量可以被当前类或模块中的表达式访问;

    在类方法中声明的实例变量可以被当前类下的所有方法使用;  

    类变量可以在各个类之间共享数据;

    class Person
      def setName(name)
        @name=name
      end
      
      def setAge(age)
        @age=age
      end
      
      def setIsMale(isMale)
      @isMale=isMale
      end
      def say
        sex=@isMale?"小男孩":"小女孩"
        puts "大家好,我叫#{@name},我是一个#{@sex},我今年#{@age}岁"
      end
    end
    
    z=Person.new
    z.setName("小张")
    z.setAge(5)
    z.setIsMale(true)
    z.say
    

    3、属性定义标识符

    #attr:根据布尔型数据key的值,定义一个可读写的属性;
    #attr_reader:定义一个或多个只读的属性;
    #attr_writer:定义一个或多个只写的属性;
    #attr_accessor:定义一个或多个可以读写的属性;
    
    class Roadster
      def init
        @brand="BYD"
        @color="黄色"
        @weight="1800KG"
        @F_zero="210km/h"
      end
    
      def brand
        @brand
      end
      def color
        @color
      end
      def weight
        @weight
      end
      def F_zero
        @F_zero
      end
      attr_accessor:color
      attr_reader:weight,:F_zero
    end
    def showCar(car)
      puts "这辆车的品牌是:"+car.brand
      puts "这辆车的颜色是:"+car.color
      puts "这辆车的最高时速是:"+car.F_zero
      puts "这辆车的车重是:"+car.weight
    end
    
    roadster=Roadster.new
    roadster.init
    showCar(roadster)
    roadster.color="红色"
    showCar(roadster)

    >>>>>>

    这辆车的品牌是:BYD
    这辆车的颜色是:黄色
    这辆车的最高时速是:210km/h
    这辆车的车重是:1800KG
    这辆车的品牌是:BYD
    这辆车的颜色是:红色
    这辆车的最高时速是:210km/h
    这辆车的车重是:1800KG

    4、代码块

    语法:

    {
      #代码块内容  
    }
    

    或者

    do
        #代码块内容
    end
    

    e.g.

    def say
      puts "Hello"
      yield
      puts "Bye"
    end
    
    say do
      puts "What U say?"
    end
    >>>>>>

    Hello
    What U say?
    Bye

    5、继承与构造方法

    #直接上代码了
    class Bird def initialize(leg,wing) @leg=leg @wing=wing end end class Chick<Bird def initialize(color) super(2,2) @color=color end def show puts "这只#@color 色的小鸡有#@wing 只翅膀、 #@leg 条腿" end end chick=Chick.new "黄" chick.show

      

      

      

      

      

      

      

  • 相关阅读:
    怎样跟老板提加薪,来看看自己值多少钱
    leetcode-204-Count Primes
    Atitit. 异常的使用总结最佳实践java .net php Vo8f
    设计模式——第一课
    linux svn命令具体解释
    BTrace介绍和生产环境样例
    5.3.5 namedtuple() 创建命名字段的元组结构
    linux驱动开发之九鼎板载蜂鸣器驱动测试【转】
    hrtimer高精度定时器的简单使用【学习笔记】
    Linux时间子系统之(一):时间的基本概念【转】
  • 原文地址:https://www.cnblogs.com/ranlx/p/3191007.html
Copyright © 2011-2022 走看看