변수가 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
분명히이 색칠 예제는 필요하지 않으며이 장난감 예제에서 멋진 시각화 일뿐입니다.