更新: 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. N分之一 竖式除法模拟

    N分之一 Description Alice越来越痴迷于数学问题了.一天,爸爸出了个数学题想难倒她,让她求1 / n. 可怜的Alice只有一岁零九个月,回答不上来 ~~~~(>_<)~~ ...

  2. CentOS7 Failed to start LSB: Bring up/down解决方法(真正有效的方法)

    刚刚装好的虚拟机突然不能上网了,报错很诡异,具体报错如下: /etc/init.d/network restart Restarting network (via systemctl):  Job f ...

  3. 管理Cookie和Session

    管理Cookie和Session 前言 这几天中,一直再跟漏洞打交道,而在这些漏洞中,出现的最多的就是 Cookie 和 Session 了.这篇文章就简单的介绍一些 Cookie 中最常用的四个属性 ...

  4. [luoguP1044] 栈(数论?)

    传送门 卡特兰数 代码 #include <cstdio> int n; long long f[20]; int main() { int i; scanf("%d" ...

  5. Codeforces 651B Beautiful Paintings【贪心】

    题意: 给定序列,重新排序,使严格上升的子序列最多.求这些子序列总长度. 分析: 贪心,统计每个元素出现次数,每次从剩余的小的开始抽到大的,直到不再剩余元素. 代码: #include<iost ...

  6. java反射-使用反射来操纵方法

    一个类的主要成员时方法,辣么我们通过反射获取到一个类的所有方法信息后,总的寻找一种方式去操作调用这些方法,这样反射才有意义有意思. Method对象有一个方法invoke.      public O ...

  7. Linux下搭建maven私服Nexus 3.2.1-01

    1. 私服介绍私服是指私有服务器,是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构建.有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库:否则, ...

  8. 离线安装Cloudera Manager5.3.4与CDH5.3.4

    文章转载:http://www.aboutyun.com/thread-14024-1-1.html 前期准备工作(系统环境搭建) 操作系统:CentOS 6.5 x64 CPU*2 64G 300G ...

  9. seajs入门使用

    使用 Sea.js 进行模块化开发还能够带来非常多优点: 模块的版本号管理. 通过别名等配置,配合构建工具,能够比較轻松地实现模块的版本号管理. 提高可维护性.模块化能够让每一个文件的职责单一,很有利 ...

  10. SpringMVC之application-context.xml,了解数据库相关配置

    上一篇SpringMVC之web.xml让我们了解到配置一个web项目的时候,怎样做基础的DispatcherServlet相关配置.作为SpringMVC上手的第一步.而application-co ...