[ruby] 변수가 정의되어 있는지 확인 하시겠습니까?

변수가 Ruby에 정의되어 있는지 어떻게 확인할 수 있습니까? 있습니까 isset타입의 방법은 가능?



답변

defined?키워드 ( documentation )를 사용하십시오 . 항목의 종류가 있거나 nil존재하지 않는 경우 String을 반환 합니다.

>> a = 1
 => 1
>> defined? a
 => "local-variable"
>> defined? b
 => nil
>> defined? nil
 => "nil"
>> defined? String
 => "constant"
>> defined? 1
 => "expression"

skalee는 다음과 같이 말했습니다 : “nil로 설정된 변수가 초기화되었다는 점에 주목할 가치가 있습니다.”

>> n = nil
>> defined? n
 => "local-variable"


답변

존재하는 경우 아무것도하지 않고 존재하지 않는 경우 생성하려는 경우에 유용합니다.

def get_var
  @var ||= SomeClass.new()
end

새 인스턴스를 한 번만 만듭니다. 그 후에는 var를 계속 반환합니다.


답변

위 문장의 올바른 구문은 다음과 같습니다.

if (defined?(var)).nil? # will now return true or false
 print "var is not defined\n".color(:red)
else
 print "var is defined\n".color(:green)
end

var변수를 ( )로 바꾸십시오. 이 구문은 if 문에서 평가할 true / false 값을 반환합니다.


답변

defined?(your_var)작동합니다. 하고있는 일에 따라 다음과 같은 일을 할 수도 있습니다your_var.nil?


답변

“if”대신 “unless”를 시도하십시오

a = "apple"
# Note that b is not declared
c = nil

unless defined? a
    puts "a is not defined"
end

unless defined? b
    puts "b is not defined"
end

unless defined? c
    puts "c is not defined"
end


답변

사용 defined? YourVariable
이 간단 바보 유지 ..;)


답변

여기에 몇 가지 코드가 있지만 로켓 과학은 없지만 잘 작동합니다.

require 'rubygems'
require 'rainbow'
if defined?(var).nil?  # .nil? is optional but might make for clearer intent.
 print "var is not defined\n".color(:red)
else
 print "car is defined\n".color(:green)
end

분명히이 색칠 예제는 필요하지 않으며이 장난감 예제에서 멋진 시각화 일뿐입니다.