0

给定以下课程:

require 'rubygems'
require 'oci8'

class DB
  attr_reader :handle
  def initialize(username, password, db)
    @handle = OCI8.new(username,password,db)
    #We show an error if we don't have a handle after we try to connect to the DB
    raise ArgumentError, "Database connection failed" if @handle.nil
  end
end
def main()
  myHandle=DB.new('myUser','myPass','myDB')
  myHandle.handle().exec('select count(*) from vcas.deviceentitlement where rownum <= 100')
end

main()

我的脚本失败并出现错误:

`initialize': undefined method `nil' for #<OCI8:USER> (NoMethodError)
    from /home/ndefontenay/Ruby/purge_entitlement/entitlement.rb:20:in `new'
    from /home/ndefontenay/Ruby/purge_entitlement/entitlement.rb:20:in `main'
    from /home/ndefontenay/Ruby/purge_entitlement/entitlement.rb:24

我想nil检查一个对象是否已正确创建,但看起来它正在尝试运行一个nil不存在的名为的方法。这是怎么回事?

4

2 回答 2

1

它是

@handle.nil?

呸呸呸呸呸呸呸

看到点了吗?点表示接下来是方法调用。该方法的名称拼写为nil?

于 2013-08-05T17:17:31.680 回答
0

检查对象是否存在的正确方法nilnil?

末尾带有问号的方法返回一个布尔值。

于 2013-08-05T17:34:48.820 回答