更新: 2017/06/12
更新: 2017/06/16 补充.class的输出
更新: 2017/06/23 .include?检验数组/哈希表是否包含目标值
更新: 2017/07/02 block_given?检验是否给了代码块以及检验是否有layout
更新: 2017/08/26 增加prensent?并与prensence比较
更新: 2018/01/03 增加is_a?, kind_of? (Object)
更新: 2018/02/03 增加instance_of?()的例子
更新: 2018/06/02 交换[instance_of?()] 和 [instance.class]的位置并修改相关标题,更方便查询
更新: 2018/10/12  增加frozen?, eql?, equal?
 
 检验是否定义  defined? (sample)

返回值
str
 未定义  nil
 本地变量  local-variable
 全局变量  global-variable
 实例变量   instance-variable
 类变量  class variable
 常数   constant
   
   
   
   
 检验是否有值  sample.nil?
 检验是否为空  sample.empty?
 只对数组和哈希表可用
 rails可用
 empty? + nil?
 sample.blank?
 rails可用
 blank?的否定
 是否有值(+数组哈希表是否空)

 sample.presence 返回值

存在   不存在
 self   nil

注意: 没有?
n. 出席; 仪表; 风度; 鬼魂,神灵;

 sample.present?   返回值

存在   不存在
 true  false
   
   
   
   
   
   
   
   
   
 获取所属的类

instance.class

输出的是类,如Test等
 判断用  instance.class == Class

判断类

instance_of?(Object)

arr = Array.new(4, 1) # [1, 1, 1, 1]
arr.instance_of?(Array) # -> true
 判断类2 better  is_a?, kind_of? (Object)
 和instance_of?的区别
   instance_of?只能判断自己当前的类
   is_a?,
kind_of?可以判断当前实例继承的类以及被包含的module
   
 检验是否包含目标   temp = [1, 2, 3]
 temp.include?(1)

不能用来比较哈希值

 是否给了代码块  block_given?
 检验是否有layout  content_for?(:sample) ? yield(:sample)
: yield
 检验是否冻结

 frozen?

 检验是否是指定的实例

 equal?

eql?

   
   
puts("----------------------------------------")
puts("    
     
     
 1.1")
puts("----------------------------------------")
asa = nil
asa = [1,2]
puts("asa#{asa}")
print("defined?: ", defined? asa);puts()
print("nil?: ", asa.nil?);puts()
print("empty?: ", asa.empty?);puts()
#print("blank?: ");print(asa.blank?);puts()
#print("presence?: ");print(asa.presence?);puts()
puts("----------------------------------------")
puts("    
     
     
 1.2")
puts("----------------------------------------")
local = 1
Const = 1
$global = 1
@instance = 1
@@class = 1
print("local: ", defined?(local));puts()
print("Const: ", defined?(Const));puts()
print("$global: ", defined?($global));puts()
print("@instance: ", defined?(@instance));puts()
print("@@class: ", defined?(@@class));puts()
 
puts("----------------------------------------")
puts("    
     
     
 1.3")
puts("----------------------------------------")
sample = []
print("isArray: ", sample.instance_of?(Array));puts();
print("class: ", sample.class);puts();
 
puts("----------------------------------------")
puts("    
     
     
 1.4")
puts("----------------------------------------")
#2017/06/16
class Test
  @a
  def initialize(num = 0)
    @a = num
  end
 
  def myFunc()
    puts(@a)
  end
end
sample = Test.new
p(sample.class)
p(sample.class.instance_of?(String))
p(sample.class.instance_of?(Test))
p(sample.class == Test)
 
puts("----------------------------------------")
puts("    
     
     
 1.5")
puts("----------------------------------------")
#2017/06/23
#include?
puts("array test: ")
temp = [1,2,3,5]
print(temp);puts();
for i in 1...5
  if temp.include?(i)
    printf("temp include
%d\n", i)
  else
    #printf("temp has no
member of %d\n", i)
    puts("temp has no member
of #{i}")
  end
end
 
puts("------------")
puts("hash test: ")
temp = {:a => 1, :b => 2, :c => 3, :d => 5}
temp1 = {x: 1, b: 2, c: 5, d: 7}
temp1.each_key do |item|
  if temp.include?(item)
    print("temp include %s",
item.inspect);puts();
  else
    puts("temp has no member
of #{item}")
  end
end
 
运行结果如下

----------------------------------------

1.1

----------------------------------------

asa[1, 2]

defined?: local-variable

nil?: false

empty?: false

----------------------------------------

1.2

----------------------------------------

check.rb:19: warning: class variable access from
toplevel

local: local-variable

Const: constant

$global: global-variable

@instance: instance-variable

check.rb:24: warning: class variable access from
toplevel

@@class: class variable

----------------------------------------

1.3

----------------------------------------

isArray: true

class: Array

----------------------------------------

1.4

----------------------------------------

Test

false

false

true

----------------------------------------

1.5

----------------------------------------

array test:

[1, 2, 3, 5]

temp include 1

temp include 2

temp include 3

temp has no member of 4

------------

hash test:

temp has no member of x

temp include :b

temp include :c

temp include :d

Ruby检验变量的更多相关文章

  1. 雷林鹏分享:Ruby 环境变量

    Ruby 环境变量 Ruby 解释器使用下列环境变量来控制它的行为.ENV 对象包含了所有当前设置的环境变量列表. 变量描述 DLN_LIBRARY_PATH动态加载模块搜索的路径. HOME当没有参 ...

  2. Ruby 环境变量

    Ruby 环境变量 Ruby 解释器使用下列环境变量来控制它的行为.ENV 对象包含了所有当前设置的环境变量列表. 变量 描述 DLN_LIBRARY_PATH 动态加载模块搜索的路径. HOME 当 ...

  3. centos7 Ruby环境变量配置

    ruby安装参考博客:https://blog.csdn.net/yelllowcong/article/details/78362370  (Redis之集群redis-trib.rb环境的搭建-y ...

  4. JavaScript 检验变量

    创建: 2019/02/20 迁入: 删除[WIP]标签(因为随时更新, 不存在完成不完成)   从[JavaScript 式与运算符]迁入typeof 更新: 2019/03/25 补充静态变量与参 ...

  5. Swift4 检验变量

    创建: 2018/05/03  判断类 public func isKind(of aClass: Swift.AnyClass) -> Bool  是否是aClass或其子类的实例  publ ...

  6. ruby中实例变量、类变量等等的区别和联系

    ruby的变量有局部变量,全局变量,实例变量,类变量,常量. 1.局部变量 局部变量以一个小写字母开头或下划线开头 局部变量有局部作用域限制(比如一个block内),它的作用域起始于声明处,结束于该声 ...

  7. [置顶] ruby变量详解(收集+整理)

    ruby的变量有局部变量,全局变量,实例变量,类变量,常量. 1.局部变量 局部变量以一个小写字母开头或下划线开头 局部变量有局部作用域限制(比如一个block内),它的作用域起始于声明处,结束于该声 ...

  8. 雷林鹏分享:Ruby 变量

    Ruby 变量 变量是持有可被任何程序使用的任何数据的存储位置. Ruby 支持五种类型的变量.您已经在前面的章节中大概了解了这些变量,本章节将为您详细讲解这五种类型的变量. Ruby 全局变量 全局 ...

  9. 理解Ruby中的作用域

    作用域对于Ruby以及其它编程语言都是一个需要理解的至关重要的基础知识.在我刚开始学习ruby的时候遇到很多诸如变量未定义.变量没有正确赋值之类的问题,归根结底是因为自己对于ruby作用域的了解不够, ...

随机推荐

  1. os系统下安装Python2和Python3

    一.下载Xcode工具 1.在App Store 里面下载并安装Xcode 2.安装好Xcode后就打开它,首次进入会有一些LicenceAgreement,点同意就是了,然后就进入到 这个界面: 3 ...

  2. swift -从相册中选择照片并上传

    选择本地图片并上传是应用开发中一个比较常见的功能.        原文出自:www.hangge.com  转载请保留原文链接:http://www.hangge.com/blog/cache/det ...

  3. Java面向对象学习-----类的成员变量

    类的成员变量: 猜数字游戏:一个类A有一个成员变量v,通过随机产生一个100内的整数给v赋值.定义一个方法,对A类的成员变量v进行猜.   没有猜对的情况下提示如果大了则提示大了,小了则提示小了,并且 ...

  4. JavaEE JDBC ResultSet内外移动

    ResultSet内外移动 @author ixenos 内外移动指位置光标的移动 内移动就是一个ResultSet得到后的那个光标! 外移动就是多个ResultSet的迭代 内移动 一般的数据库都不 ...

  5. Android BGABadgeView:BGABadgeFrameLayout(5)

     Android BGABadgeView:BGABadgeFrameLayout(5) BGABadgeView除了有自己的线性布局,相对布局外(见附录文章7,8),还实现了FrameLayou ...

  6. 解方程(codevs 3732)

    题目描述 已知多项式方程: a0+a1x+a2x^2+..+anx^n=0 求这个方程在[1, m ] 内的整数解(n 和m 均为正整数) 输入输出格式 输入格式: 输入文件名为equation .i ...

  7. EasyUI单击行数据时动态编写editor

    $.extend($.fn.treegrid.methods, { addEditor: function (jq, param) { if (param instanceof Array) { $. ...

  8. 淘宝后台添加颜色尺码动态sku

    废话不多说,直接上代码,用了vue,可直接copy运行 <!DOCTYPE html> <html lang="en"> <head> < ...

  9. 004 ospf

    r0(config)#router ospf 1 OSPF process 1 cannot start. There must be at least one "up" IP i ...

  10. js类继承扩展super

    相应的资料https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/super 例子: class Pol ...