文档章节

Ruby中的逻辑运算以及符号做为方法名

穿山
 穿山
发布于 2017/11/08 11:58
字数 377
阅读 56
收藏 0
#第十二课 逻辑运算
a,b = true, false
puts a && b #逻辑与运算
puts a || b #逻辑或运算
puts !a #取反
puts !b
puts c = (4 >3)
puts (4 > 3) && b

#三元运算
a, b = 4,5
puts c = (a > b) ? a : b

#范围运算
(2..5).each do |n|#从2到5闭区间
  print n
end

(2...5).each do |n|#从2到4左闭右开
  print n
end

#Ruby中符号也可以是方法名
class Student
  Version = 2#常量
  @@all_num = 2 #全局变量得要初始化不然要报错
  include Math #导入Mathm模块 Mix-in
  extend Math
  def initialize(name, num, sex)
    @name = name
    @num = num
    @sex = sex
  end

  class << self
    def class_fun
      puts "这是一个类方法"
    end

    def class_fun2
      puts "这也是一个类方法"
    end
  end

  def self.class_fun3
    puts "这是类方法的另外一种写法"
  end
  #相当于Java中的get方法
  def get_name
    @name
    puts @@all_num += 1
  end

  def name
    @name
  end
  #相当于Java中的set方法
  def name=(value)
    @name = value
  end

  def set_name(name)
    @name = name
    puts @@all_num += 1
  end
end

class Student
  def expend
    puts "扩展类"
  end
end

class MiddleStudent < Student
  attr_reader :name
  attr_writer :name
  def initialize(name)
    @name = name
  end

  def sub_fun
    puts "这是子类的方法#{@name}"
  end
end

puts s = Student.new("young", 20, "男")
puts s.get_name
puts s.name
puts s.set_name("改了个名字")
puts s.name =("改了个好名字")
m = MiddleStudent.new("初中生")
puts m.name

class Vector
  attr_accessor :x, :y
  def initialize(x, y)
    @x = x
    @y = y
  end

  def +(value) #符号+做为方法名
    Vector.new(@x + value.x, @y + value.y)
  end

  def -(value)#符号-做为方法名
    Vector.new(@x - value.x, @y - value.y)
  end
end

p a = Vector.new(3, 5)
p b = Vector.new(6, 9)
 
p a + b
p a - b

 

© 著作权归作者所有

穿山
粉丝 9
博文 33
码字总数 18655
作品 0
南京
私信 提问
以一个javaEE程序员的身份来学ruby

做为一个javaEE的程序员,在看关于ruby的资料的时候,难免会以一个对比的眼光来学习ruby,每看到一个和java不一样的地方,就会产生某些想法,先记录下来,待日后来验证。另外,都说Ruby在很多...

茶码古道
2012/07/02
136
0
Ruby alias 与 undef

alias 有时我们会希望给已存在的方法设置别名, 这种情况下, 就需要使用 alias 方法. alias 方法的参数为方法名或者符号名. 另外, 除了为方法设置别名外, 在重定义已经存在的方法时, 为了能用...

changsanjiang
2017/10/21
0
0
iOS App的加固保护原理

苹果系统的封闭性导致iOS APP安全性比较高,但是实际上iOS应用本身被破解的难度并不高,一旦在越狱设备上,ipa被分析就会变得很容易,本文通过讲解iOS APP的破解分析过程来引出我们要如何的保...

ziyuzhiye
2017/10/31
0
0
Ruby 模块(Mix-in)

是 Ruby的特色功能之一. 如果说类表现的是实物的实体(数据)及其行为(处理), 那么模块表现的就只是事物的行为部分. 模块与类有以下两点不同: 模块不能拥有实例 模块不能被继承 利用 Mix-in 扩...

changsanjiang
2017/10/23
0
0
Vuejs中关于computed、methods、watch的区别。

Vue.js在模板表达式中限制了,绑定表达式最多只能有一条表达式,但某些数据需要一条以上的表达式运算实现,此时就可以将此数据放在计算属性(computed)当中。 Vuejs中关于computed、methods...

lslaiwy
2018/08/24
81
0

没有更多内容

加载失败,请刷新页面

加载更多

PCB设计-Allegro软件入门系列-铺铜操作(下)

铺铜是PCB很常见的操作,PCB的敷铜一般都是覆地铜,增大地线面积,有利于地线阻抗降低,使电源和信号传输稳定,在高频的信号线附近敷铜,可大大减少电磁辐射干扰,起屏蔽作用。 本讲讲解啊一...

demyar
27分钟前
4
0
如何通过WASI SDK 在Linux上编译ZXing C++

Mozilla在今年三月份的时候公布了WASI。WASI的目标就是让WebAssembly在任何地方都可以运行,而不仅仅像现在这样只能运行在Node.js和Web浏览器中。WASI目前依然处于初级阶段,这篇文章分享下如...

yushulx
29分钟前
3
0
.Net界面开发神器—DevExpress官方汉化包免费下载!还在等什么?

点击获取DevExpress v19.1.7新版试用下载 DevExpress Localization Service允许您创建一组自定义的附属程序集,要将语言包添加到程序集中,请查看本文中为大家列出的对应版本的汉化包,下载并...

FILA6666
29分钟前
4
0
php生成二维码

        header('Content-Type: image/png');        //清除缓冲区,防止之前面不知道的情况下被加头部信息导致不显示图片内容        ob_clean();        $...

横着走的螃蟹
34分钟前
3
0
伪类和伪元素

伪类和伪元素 伪类和伪元素,对于绝大多数同学来说,都是耳熟能详的名字,但确实又有很多人搞不清楚它们之间的区别,以致于混淆概念。而当概念都混淆的时候,也往往意味着你不会经常使用它,...

不负好时光
37分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部